shell 开头
#!/bin/bash <
文件权限
$ ll total 4-rw-r--r-- 1 root root 88 Apr 24 22:15 demo.sh
- 其中可以看到,demo.sh没有可执行权限;但是 bash demo.sh可以运行
$ ./demo.sh -bash: ./demo.sh: Permission denied $ bash ./demo.sh shell demo
$ chmod 755 ./demo.sh # or$ chmod u+x ./demo.sh # 给当前拥有者添加可执行权限$ ll -rwxr--r-- 1 root root 88 Apr 24 22:15 demo.sh
条件判断
字符串非空
$ [ -n "$TEST" ] && echo Y || echo FY
$ [-z $TEST] && echo Y
字符串比较
$ [ $USER == root ]# or $ test $USER == root
整数比较
$ [ 1 -gt 2 ]; echo $? 1 # $? 查看上一条命令结束码;0 正确 非0,false
文件属性判断
$ [ -e get.sh ] && echo "存在" || echo "不存在"存在
- -d 判断存在且为目录
- -f
- -L 软连接 (类似快捷键,跨分区,但是删除不可用;硬链接,相反;)
- -p 管道
- -r 读权限
- -w 写权限
- -x 执行权限;root 也必须有x,才能执行
- -s 非空
[] 与 [[]]
$ [ 5 -gt 8 ] $ [[ 5 -lt 8 ]]
$ [ -z "" ] && echo y || echo n y $ [ -n '13' ] && echo y || echo n y
$ [ 9.txt -nt get.sh ] && echo y || echo n $ [[ 9.txt -nt get.sh ]] && echo y || echo n
$ [[ 5 == 9 && 5 == 4 ]] && echo y || echo n n # []使用&& $[ 5 == 9 && 5 == 4 ] && echo y || echo n -bash: [: missing `]' $[ 5 == 9 -a 5 == 4 ] && echo y || echo n n
$[[ 5 == 8 || 6 == 9 ]] $[ 5 == 8 -o 6 == 9 ]
$[[ 5 > 9 ]] - 排序比较 $[ 5 > 9 ] - 部分支持
# 仅仅是字符比较 $ test = '123' $ [ $test == 1* ] && echo y || echo n n # 正则比较 $ [[ $test == 1* ]] && echo y || echo n y # a是否为数字 $ a=2 $[[ $a == [0-9] ]]&& echo y || echo n y
# 正则匹配,是否包含0-9$b='a23'$[[ $b =~ [0-9] ]]&& echo y || echo n y