linux 下shell中if的“-e,-d,-f”
1、文件表达式
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
2、整数变量表达式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
3、字符串变量表达式
If [ $a = $b ] 如果string1等于string2,则为真
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2,则为真
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空,则为真
if [ $sting ] 如果string 非空,返回0 (和-n类似)
4、逻辑表达式
逻辑非 ! (条件表达式的相反)
if [ ! 表达式 ]
if [ ! -d $num ] 如果不存在目录$num
逻辑与 –a (条件表达式的并列)
if [ 表达式1 –a 表达式2 ]
逻辑或 -o (条件表达式的或)
if [ 表达式1 –o 表达式2 ]
5、Ctrl+c、Ctrl+z、Ctrl+d
在Linux系统中,Ctrl+c和ctrl+z都是bai中断命令,但是他们的作用却不du一样zhi.
Ctrl+c是强制中断程序的执行,,进程已经终止
Ctrl+z是将dao任务中止(暂停的意思)。
此时此任务并没有结束,仍然在进程中他只是维持挂起的状态。用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.
Ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
6、什么时候不适合使用Shell编程
资源紧张的项目,特别是那些速度是重要因素的地方(排序,散序,等等)
程序要进行很复杂的数学计算,特别是浮点计算,任意精度的计算,或者是复数计算(应该用C++或是FORTRAN代替)
要求交叉编译平台的可移植性(使用C或者是Java代替)
需要结构化编程的复杂应用(需要变量类型检查和函数原型等等)
对于影响系统全局性的关键任务应用。
安全非常重要。你必须保证系统完整性和抵抗入侵,攻击和恶意破坏。
项目由连串的依赖的各个部分组成。
多种文件操作要求(Bash被限制成文件顺序存取,并且是以相当笨拙,效率低下的逐行的存取方式)
需要良好的多维数组支持。
需要类似链表或树这样的数据结构。
需要产生或操作图象或图形用户界面。
需要直接存取系统硬件。
需要端口号或是socket I/O。
需要使用可重用的函数库或接口。
所有的私有的不开源的应用程序(Shell脚本的源代码是直接可读,能被所有人看到的)
版权归属:
Administrator
许可协议:
本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
评论区