shell 文件权限
shell 开头
- 以sh后缀
- 开头#注释,表明采用何种解释器
1
- 添加作者等说明
1
2
3
4
5
6#/bin/bash
<<ABC
author:cheonghu
date:2020-05-06
desc:shell demo
ABC
文件权限
1 | $ ll |
- 其中可以看到,demo.sh没有可执行权限;但是 bash demo.sh可以运行
1
2
3
4
5$ ./demo.sh
-bash: ./demo.sh: Permission denied
$ bash ./demo.sh
shell demo - 也可以通过chmod 修改权限
1
2
3
4
5$ chmod 755 ./demo.sh
# or
$ chmod u+x ./demo.sh # 给当前拥有者添加可执行权限
$ ll
-rwxr--r-- 1 root root 88 Apr 24 22:15 demo.sh
条件判断
字符串非空
- n 测试是否为非空,需要””避免异常错误
1
2$ [ -n "$TEST" ] && echo Y || echo F
Y - z 测试是否为空
1
2$ [-z $TEST] && echo Y
字符串比较
1 | $ [ $USER == root ] |
整数比较
-gt
1
2
3$ [ 1 -gt 2 ]; echo $?
1
# $? 查看上一条命令结束码;0 正确 非0,false-eq
-ne
-lt
-le
-ge (大于或等于)
文件属性判断
-e 文件或者目录是否存在
1
2$ [ -e get.sh ] && echo "存在" || echo "不存在"
存在-d 判断存在且为目录
-f
-L 软连接 (类似快捷键,跨分区,但是删除不可用;硬链接,相反;)
-p 管道
-r 读权限
-w 写权限
-x 执行权限;root 也必须有x,才能执行
-s 非空
[] 与 [[]]
通用
- 数值大小比较
1
2$ [ 5 -gt 8 ]
$ [[ 5 -lt 8 ]] - 字符串非空比较
1
2
3
4$ [ -z "" ] && echo y || echo n
y
$ [ -n '13' ] && echo y || echo n
y - 文件属性
1
2$ [ 9.txt -nt get.sh ] && echo y || echo n
$ [[ 9.txt -nt get.sh ]] && echo y || echo n
- 数值大小比较
不同
逻辑运算&&
1
2
3
4
5
6
7
8
9$ [[ 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逻辑运算||
1
2$[[ 5 == 8 || 6 == 9 ]]
$[ 5 == 8 -o 6 == 9 ]符号使用>,<
1
2$[[ 5 > 9 ]] - 排序比较
$[ 5 > 9 ] - 部分支持正则使用
1
2
3
4
5
6
7
8
9
10
11
12
13# 仅仅是字符比较
$ 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=~
1
2
3
4# 正则匹配,是否包含0-9
$b='a23'
$[[ $b =~ [0-9] ]]&& echo y || echo n
y
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏