Shell 流程控制
1. IF - ELSE
if
if condition
then
command1
command2
...
commandN
fi
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi --适用终端输入
if-else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
2.for 循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
3. while 语句
while condition
do
command
done
输入与输出重定向
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
EOF 用法
#EOF只是一个分界符,当然也可以用abcde等等替换
当shell遇到<<时,它知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分解符(位于单独一行)
此分界符可以是所定义的任何字符串,其实,不一定要用EOF,只要是‘内容段’中没有出现的字符串,都可以用来替代EOF,完全可以换成abcd之类的字符串,只是一个开始和结束的标志而已
常用举例
交互式程序(命令)<<EOF
command1
command2
...
EOF
cat << EOF >> cql03.text
> strace iostat vmstat sar
> top uptime
> EOF
[root@www ~]# cat cql03.text
strace iostat vmstat sar
top uptime
用来注释整段脚本代码。
#!/bin/bash
echo "明天你好"
:<<EOF
echo "床前明月光"
echo "hello word"
EOF
echo "byebye!"
[root@www ~]# sh cql01.sh
明天你好
byebye!
这段脚本执行时,中间红色部分不会被执行: