#!/bin/bash
echo "显示etc目录下所有以大写p和小写p开头的文件或目录本身:"
ls -d /etc/[pP]*
echo ""
echo "显示/var目录下的所有文件或目录本身,并显示结果中的小写字母转换成大写字母:"
ls -d /var/* | tr 'a-z' 'A-Z'
echo ""
echo "创建临时文件/tmp/mylife.xxxx:"
mktemp -d /tmp/myfile.XXXX
结果:2.
#!/bin/bash
#
id user1 &> /dev/null || useradd user1
id user3 &> /dev/null || useradd user3
user1_id=$(id -u user1)
user3_id=$(id -u user3)
idsum=$[$user1_id+$user3_id]
echo ${idsum}
条件测试:
判断某需求是否满足,需要右测试机来实现;
如何编写测试表达式实现所需的测试:
(1)执行命令,并利用命令状态返回值来判断;
0 : 成功
1-255: 失败
(2)测试表达式
test expression
[ expression ] (注意expression两端必须空格
)
[[ expression ]] (注意expression两端必须空格
)
bash的测试类型:
数值测试:
字符串测试:
文件测试:
1.数值测试: 数值比较
-eq: 是否等于
-ne:是否不等于
-gt: 是否大于:
-ge:是否大于等于:
-lt:是否小于:
-le:是否小于等于:
2.字符串测试:
==:是否等于;
>;是否大于;
<:是否小于;
!=:是否不等于;
=~: 左侧字符串是否能够被右侧的pattern所匹配;
-z “string”: 判断指定的字符串是否为空,空则真,不空则假;
-n “string”: 判断指定的字符串是否为空,不空则真,空则假;
空引用需要加引号:
注意到上面"[]"时是不准确的,相比较的时候尽量使用""[[]]"
字符串要加引号加以引用
=~练习:
3.文件测试
存在性测试:
-a FILE(文件路径)
-e FILE(文件路径)
文件的存在性测试,存在则为真,不存在则为假
存在即类型测试:
-b FILE:是否存在并且为块设备文件
;
-c FILE: 是否存在并且为字符设备文件
;
-d FILE: 是否存在并且为目录文件
;
-f FILE:是否存在并且为普通文件
;
-h或-l FILE:是否存在并且为符号链接文件
;
-p FILE: 是否存在并且为命名管道文件;
-S: FILE: 是否存在并且为套接字文件;
文件权限测试:
-r FILE : 是否存在并且对当前用户可读
-w FILE: 是否存在并且对当前用户可写
-x: FILE:是否存在并且对当前用户可执行
特殊权限测试:
-u FILE :是否存在并且 拥有suid权限
-g FILE : 是否存在并且拥有sgid权限
-k FILE : 是否存在并且拥有sticky权限
-e
-a
-b
脚本的状态返回值:
默认是脚本中执行的最后一条命令的状态返回值;
自定义状态退出状态码;
exit [n]: n为自己指定的状态码;
注意: shell进程遇到exit时,即会终止,因此,整个脚本执行即为结束.