shell script
判断的进阶写法:
&&:与的意思,连接2个或多个命令,前面的执行成功或者返回true后面的命令才执行,前面的执行失败后面的命令就不会执行
||:或的意思,连接2个或多个命令,前面的执行成功了立即退出,后面就不执行;执行失败继续向后执行,直到有执行成功的就结束
“||” ”&&”没有优先级区分
&&:
||:
&&和||:每个“||”或者 ”&&”参考的是这个符号之前的整体执行结果(ture或者false)
if的替代写法:
if else的替代写法:
elif的替代写法:
实际中更常用的一些写法:
for:
for in 是for循环的基本用法。for语句后紧跟一个变量,该变量将被送入循环,每次循环都会将in后的一个元素赋值给该变量。
do和done标记了for循环的开始和结束。
[root@test scripts]# cat for.sh
#!/bin/bash
for i in a b c
do
echo $i
done
[root@test scripts]# sh for.sh
a
b
c
写到一行:
注意:in后面跟若干值不常用,常用的是把一些值写在配置文件中,以空格或者换行分隔,然后用命令引用这个配置文件
for 循环的利器seq命令
seq命令可以产生一组数据,这组数据从第一个参数开始,第二个参数结束。
如果需要步长,三个参数,中间的参数为步长:
经典用法:
for i in seq 1 20
;do ssh 192.168.2.$i “cat /etc/passwd|grep zhangzhe”;done
for i in seq 1 500
;do touch $i.txt;done
for + continue:
while循环
经典用法:
说明:整型计算,shell script中有若干种整形计算的方式,在这里计算的表达式由“$(( ))”作为标志,括号里面填写表达式。
while true
while循环在shell script里面一个常用的地方就是创建一个死循环
while read line
while read的用法是shell script中出现率仅次于for循环的循环,几乎所有复杂文本的处理都需要用到while read line这样经典的语句。
while read 后紧跟一个变量,隐性的为该变量赋值。(for 和read后的变量都是赋值操作,所以没有“$”符号。)
用法一:
说明:读取一个文件,管道给while read,然后while read读取文件中的每一行赋值给变量line,逐行打印文件内容。
用法二:
和基本用法以类似,只是文件不以管道形式传送,而在while循环末尾的done后面使用重定向
区别:
方式一:
方式二:
说明:使用管道的while read会启动一个子shell,在其中的修改不会带到父shell中。重定向的while read没有这个问题
交互:
read:
read交互可以让用户输入一串字符,这串字符赋值给某个变量。在linux下经常可以看到要求输入“yes/no”,这就是类似read的用法。
read有时候需要交互的是密码,密码是不希望被看到的。有一个参数可以使用:
select:
用于确定的选择。也就是说脚本已经有明确的若干选项,不希望用户输入这些选项内容,只希望用户指定某个选项。
注意事项:
1.PS3是一个系统变量,专门用于select的提示语句;
2.select后的变量也是即将赋值的,所以不加“$”;
3.do和done之间必须有一个break,不然程序无法继续向下执行