Linux命令行与shell编程笔记 结构化命令
2016-08-20 12:18
309 查看
11章 使用结构化命令
if command then command fi
这个结构就是if 部分命令成功运行 ,就执行then,否则跳过then。就是C语言中的if没有else的部分。但是不要理解为ifcommand为真执行then部分的命令。
if command then command else command fi
如果if后面的命令退出状态码=0,那么就执行then,否则,执行else
if command1 then commands elif command2 then commands fi
test命令
test命令中列出的条件成立,test命令就会退出并且返回退出状态码0,如果条件不成立,返回退出状态码1.在这种情况下,if形式完全等同于其他语言的if语句
if test condition then commands fi #或者 if [ command ] then commands fi #方括号两边必须加入一个空格,不然会报错
test命令可以比较3类条件,数字比较,字符串比较,文件比较
1 数值比较
比较 描述
n1 -eq n2 检查n1是否与n2相等
n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否小于或等于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2
注意:不能使用浮点数
2 字符串比较
比较 描述
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
1.大于小于符号要转义,不然会被识别为重定向符号
2.test命令根据ASCII顺序排序,与sort命令不同
字符串长度
当变量为空字符串或者没有初始化时,变成长度是0
空字符串或没有初始化的变量可能会对程序有灾难性影响,使用前最好先使用test命令中的-n和-z确认
3文件比较
比较 描述
-d file 检查file是否存在并且是否是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并且是否是一个文件
-r file 检查file是否存在并可读
-s 检查file是否存在并非空
-w 检查file是否存在并可写
-x 检查file是否存在并可执行
-O 检查file是否存在并属于当前用户所有
-G 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新(new than)
file1 -ot file2 检查file1是否比file2旧(old than)
这是比较文件的创建时间
多个条件一起判断:|| &&
使用双尖括号
将高级数学表达式放入其中。
命令符号
符号 描述
val++ 后增
val– 后减
++val 先增
–val 先减
! 逻辑求反
~ 位求反
** 幂运算
<< 左位移
的>> 右位移
& 位布尔和
| 位布尔或
&& 逻辑和
|| 逻辑或
使用双方括号
提供了模式匹配(pattern matching)特性,可以在其中使用正则表达式
if [[ $USER == r* ]]
case命令
命令格式:
case variable in pattern1 | pattern2) commands1;; pattern3) commands2;; *) default commands;; esac
bash中是可以在case中检查字符串的
case $USER in rich | barbara) echo "welcome $USER";; testing) echo"echo "special testing account";; jessica) echo "do not forget to log off when you are done";; *) echo "sorry you are not allowed here";; esac
12章 更多的结构化命令
for var in list do command done
list中根据空格确定var,也可以更改字段分隔符(空格,制表符,换行符)
在shell脚本中更改IFS环境变量
IFS=$’\n’
for var in
cat $file
for var in /home/rich/test/*
C语言风格的for命令
for((variable assignment;condtion;interator process)) do commands done
for((i=1;i<=10;++i))
while命令
while test command do other commands done
当使用多个测试命令,只有最后一个测试命令的退出状态码会被用来决定什么时候结束循环
until命令
其工作方式与while相反,要求指定一个输出非零退出状态码的测试命令
until test commands do other commands done
控制循环
break
continue
他们都可以指定跳出/继续的循环层数
break n
continue n
n默认都为1
处理循环的输出
可以在循环的done之后接管输出,比如
for var in A B C do echo "$var" done > out.txt for var in A B C do echo "$var" done | sort
相关文章推荐
- linux笔记:shell编程-文本处理命令
- Linux-Shell脚本编程-学习-5-Shell编程-使用结构化命令-if-then-else-elif
- Linux命令行与shell编程笔记 5章-7章
- Linux常用命令笔记---shell编程基础
- Linux命令行与shell编程笔记-13处理用户输入
- Linux命令行与shell脚本(8)--结构化命令
- Linux学习笔记--结构化命令
- linux awk 学习笔记三(结构化命令、函数)
- Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)
- Linux命令行与shell编程笔记 第10章
- Linux学习笔记-结构化命令2
- Linux-Shell脚本编程-学习-6-Shell编程-使用结构化命令-文件比较-case编程
- 卡卡笔记之Linux基础命令---<壹>
- 写得蛮好的linux学习笔记(主要是linux shell命令)
- Linux学习笔记——Linux高级命令详解及示例
- linux 命令笔记
- linux整理笔记二 系统管理命令
- linux基本命令学习笔记
- 卡卡笔记之Linux基础命令---<貳>
- LINUX的一些初级命令笔记