1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > shell脚本条件测试 正整数字符串比较与if case语句

shell脚本条件测试 正整数字符串比较与if case语句

时间:2021-11-27 12:03:34

相关推荐

shell脚本条件测试 正整数字符串比较与if case语句

目录

条件测试

三种测试方法

选项

比较整数数值

字符串比较

脚本中常用命令

echo命令

date命令

cal命令

tr命令

cut命令

sort命令

uniq命令

cat多行重定向

if语句

分支结构

​编辑

case

使用格式

条件测试

三种测试方法

①test命令测试

②[ ]测试(注意前后需要有空格)

③[[ ]]加强版[ ],测试支持通配符和正则表达式

选项

-d:测试是否为目录-e:测试目录或文件是否存在-a:测试目录或文件是否存在-f:测试是否为文件-r:测试当前用户是否有权限读取-w:测试当前用户是否有权限写入-x:测试当前用户是否有权限执行-L: 测试是否为软连接文件

比较整数数值

-eq:第一个数等于(Equal)第二个数-ne:第一个数不等于(Not Equal)第二个数-gt:第一个数大于(Greater Than)第二个数-lt:第一个数小于(Lesser Than)第二个数-le:第一个数小于或等于(Lesser or Equal)第二个数-ge:第一个数大于或等于(Greater or Equal)第二个数

字符串比较

选项=:字符串内容相同!=:字符串内容不同,! 号表示相反的意思-z:字符串内容为空-n: 字符是否存在

逻辑测试

格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ... 格式2:命令1 操作符 命令2 ... 常见条件-a或&&:逻辑与,“而且”的意思全真才为真-o或||:逻辑或,“或者”的意思一真即为真!:逻辑否

脚本中常用命令

echo命令

echo命令:打印内容在窗口中

①echo -n 表示输出不换行

②echo -e 表示输出转义符

echo -e 配合转义符

\b 退格,删除前一个字符。例如 echo -e "1234\b56" 则输出的是12356,4会被删除。

\c 抑制更多输出,\c后的内容全部不输出。例如 echo -e "123\c456"则输出的是123。

\n 输出换行,\n后的内容换行。例如 echo -e "123\n456 " 则输出123下一行输出456。

\t 相当于输出过程中按了一下tab键。

\f 输出换行但是光标位置不变。例如echo -e "123\f456"则输入123下一行开头空出123的位置然后再输出456

date命令

date命令:查看时间,显示格式为,星期 月 日 时分秒 年

选项:

+%F 输出格式年-月-日,注意%在crontab定时中不能直接使用,需要转义

+%T 输出格式时:分:秒, 注意%在crontab定时中不能直接使用,需要转义

cal命令

cal命令:显示当月日历。

选项:

cal 12 显示本年整年日历

cal 某年 显示此年完整日历

tr命令

tr命令:替换内容

基本格式:tr 需要替换的内容 替换后的内容

例如: tr [a-z] [A-Z] 遇见小写字母全部转为大写字母

选项:

-s 压缩功能。例如 tr -s aaa 输出a。

-d 删除功能。例如 tr -d abc 则输入123abc回车只会打印123。

-c 用字符串1中字符集的补集替换此字符集,例如 cat /dev/random | tr -dc [[:alnum:]] | head -c 12。 /dev/random中是随机的字符内容-dc 表示删除其他不需要内容 [[:alnum:]] 表示数字和字符 head -c 12 表示取前12个字符,完整表达式意思为查看random文件并将非字符和数字内容删除然后取前12个字符,常用于生成随机密码。

cut命令

cut命令:提取想要的信息。

选项:

-d 指定分隔符 例如 cut -d ":"指定:为分隔符。

-f 选择第几列 例如 cut -f3 取第三列,-f1,3取第1列和第三列,-f1-3取1-3列。

sort命令

sort命令:排序

选项:

-r 执行反方向(由上至下)整理

-n 按数字大小排序,默认第一列默认按字母顺序

-t 指定分隔符

-k 指定列 ,例如 -k3

uniq命令

uniq命令:去除连续的重复,一般配合sort使用

-c 显示每个重复出现的次数

split 命令:分隔大文件

-b 大小(例如1G) +要分隔文件名 加名称分隔指定名称,但是后面的xaa,xab不能指定,只能指定x。

cat多行重定向

cat <<EOF

1

2

3

EOF

打印123到屏幕

if语句

分支结构

单分支if 判断条件;then 条件为真的分支代码fi例子:#!/bin/bashif [ "$USER" != "root" ]thenecho "非管理员用户无权限操作"elseecho "是管理员用户"fi

双分支if 判断条件; then条件为真的分支代码else条件为假的分支代码fi

多分支if 判断条件1then条件1为真的分支代码elif 判断条件2then条件2为真的分支代码elif 判断条件3;then条件3为真的分支代码...else以上条件都为假的分支代码fi例子:#!/bin/bashread -p "请输入你的考试分数:" gradeif [ $grade -ge 85 ]&& [ $grade -le 100 ]thenecho "你的成绩为$grade"echo "你的成绩为优秀"elif [ $grade -ge 70 ]&&[ $grade -le 84 ]thenecho "你的成绩为$grade"echo "你的成绩为良好"elif[ $grade -ge 60 ]&&[ $grade -le 69 ]thenecho "你的成绩为$grade"echo "你的成绩为合格" elseecho "你的成绩为$grade"echo "你的成绩不合格"fi

case

使用格式

case 变量引用 in

PAT1) 符合条件1执行分支1的命令,PAT1可以使用通配符

分支1命令

;; 每个分支结束的固定格式

PAT2) 符合条件1执行分支2的命令,PAT2可以使用通配符

分支2命令

;; 每个分支结束的固定格式,可以有多个分支

*) 不符合其他任意分支的默认分支

默认分支命令

;; 分支结束的固定格式

esac case语句结束标志

#!/bin/bashread -p "请输入你的分数" scorecase $score in100)echo "$score 你太优秀了";;[89][0-9])echo "$score 表现不错";;[67][0-9])echo "$score 你及格了";;[0-9]|[1-5][0-9])echo "$score 你不及格";;*)echo "输入有误"esac

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。