shell中与C语言中的区别
shell中为啥与C语言有区别呢?弄成一样的不是很好么,其实不然,shell提供很多操作,这些操作不单单是执行程序或者命令,在很多时候是执行脚本的,简单的shell就是脚本编程,它的主要目的是处理文件相关操作,这样如果是单纯的C语言就没办法完成了,所以需要加入很多能够操作命令的东西,对此下面进行了简单的说明:
1.在shell中所有关于变量的操作需要用(( ))来区分,例如:
a=10; b=20; ((c=a+b)); echo ${c};
上面的例子中(( c=a+b))这里用了双括号是为了说明里面全部是变量运算,也就是把a的值和b的值相加赋给c;然后打印c的值,那有人可能会问,既然(())表示变量的值进行运算,那岂不是访问变量时可以用(())了?其实不然,访问变量只能用${变量},或者$变量,两个有区别;
2.在结构化编程中也经常可以看到(())来表示条件,直接给出例子:
a=10; b=20; if ((a+b==30)) then echo y else echo n fi
在if条件中判断变量用了(()),这里直接说明了是变量,可以明白在其他的结构化编程中同样可以使用(())来说明是变量判断,记住这点shell的结构化编程就不容易混淆了,其他主要是一些文件命令操作的需要记住。
3.下面列出一些常用的命令:
-e 文件存在为真
-r 文件存在且可读为真
-w 文件存在且可写为真
-x 文件存在且可执行位真
-s 文件中存在一个或多个字符串为真
-d 文件存在且为目录则为真
-f 文件存在且为普通文件则为真
-c 文件存在且为字符型特殊文件则为真
-b 文件存在且为块特殊文件则为真