Shell 脚本语言
程序员文章站
2022-04-05 14:51:17
...
1./dev/null
相当于Linux垃圾箱。
2.重定向
类型 | 符号 | 作用 |
---|---|---|
实例 | ls &> test.txt | |
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令正确输出输出到指定的文件或设备当中。 |
>> | 以追加的方式进行。 | |
标准错误输出重定向 | 命令2>文件 | 以覆盖的方式,把命令错误输出输出到指定的文件或设备当中。 |
命令2>>文件 | 以追加的方式进行。 | |
正确错误输出同时保存 | 命令>文件 2>&1 | |
命令>>文件 2>&1 | ||
命令 &> 文件 | ||
命令 &>> 文件 | ||
命令>>文件1 2>>文件2 |
3.支持Shell脚本的查询
cat /etc/shells //查询支持的shell脚本
4.文件测试操作符
操作符 | 作用 |
---|---|
如果下面的条件成立将会返回真 | |
-e | 文件存在。 |
-a | 文件存在,与-e相同。 |
-f | 表示这个文件是一般文件(并不是目录或设备文件)。 |
-s | 表示文件大小不为零 |
-d | 表示这是一个目录 |
-b | 表示这是一个块设备(软盘,光驱,等等)。 |
-c | 表示这是一个字符设备(键盘,modem,声卡,等等)。 |
-p | 表示这是一个管道。 |
-h | 表示这是一个符号链接。 |
-L | 表示这是一个符号链接。 |
-S | 表示这是一个socket。 |
-t | 表示文件(描述符)被关联到一个终端设备上,这个测试选项一般 被用来检测脚本中的stdio([ -t 0])或者stdout([ -t 1])是否来自于一个终端。 |
-r | 表示文件是否具有可读权限 (指正在运行这个测试命令的用户是否具有读取权限)。 |
-w | 表示文件是否具有可写权限 (指正在运行这个测试命令的用户是否具有写权限)。 |
-x | 表示文件是否具有可执行权限 (指正在运行这个测试命令的用户是否具有执行权限)。 |
-o | 判断你是否是文件的拥有者。 |
-N | 判断从文件上一次被读取到现在为止,文件是否被修改过。 |
f1 -nt f2 | 表示文件f1 比 文件f2 新。 |
f1 -ot f2 | 表示文件f1 比 文件f2 旧。 |
f1 -et f2 | 表示文件f1 和 文件f2 是相同文件的硬链接。 |
! | 表示“非”–反转测试的结果。 |
5.比较操作符
操作符 | 作用 |
---|---|
if [ “$a” -eq “$b”] | |
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
在双括号中使用 | ((“$a” < “$b”)) |
<,<=,>,>= | |
字符串比较 | if [ “$a” -eq “$b”] |
= | 等于, 等价于 ==。 |
!= | 不等于。 |
<或> | 小于,大于,按照ASCII字符进行排序。 |
-z | 字符串为“null”,意思是字符串长度为零。 |
-n | 表示字符串不为“null”。 |
-a | 表示逻辑与。 |
-o | 表示逻辑或。 |
example
1.比较输入命令与 5 的大小关系。
#!/bin/sh
# $./test.sh 5
#middle
if [ $1 -eq 5 ];
then
echo "middle"
elif [ $1 -lt 5 -a $1 -ge 0 ]
then
echo "small"
elif [ $1 -lt 0 ]
then
echo "error"
else
echo "big"
fi
2.多个条件判断
#!/bin/sh
#$./test.sh man
#Gentleman
case $1 in
boy|m[ae]n|male)echo "Gentleman";;
girl|wom[ae]n|female)echo "Lady";;
*)echo "Error";;
esac
3.for循环
#!/bin/sh
#$./test.sh
for n in $(seq 1 20);do
if [ $n -le 8 ]
then
echo $n
else
echo a+$n
fi
done
4.while循环
# 未实现
#!/bin/sh
while [ $n -le 10 ];do
echo $n
let n++
done
上一篇: 线性表插入,删除,查询操作