这是我参与更文挑战的第25天 ,活动详情查看更文挑战
控制结构
常见分支结构:
- if
#!/bin/bash
echo -n "Please input a directory:”
read dir
if cd ${dir} > /dev/null 2>&1;then
echo "enter directory $dir successed”
else
echo "enter directory $dir failed”
fi
Linux系统里执行的每一个程序都有标准输入/标准输出/错误输出三个通道。 Linux所有的设备都是以文件的形式出现,因此,这里提到的三个通道,实际上就是三个文件。
- 文件描述符 0 : 标准输入
- 文件描述符 1 : 标准输出
- 文件描述符 2 : 错误输出
find / -name "cd" 1> stdout.txt 2> errout.txt
&:取地址
> /dev/null 等价于1>/dev/null把标准输出的内容输出到垃圾箱
2 > &1 把错误输出的内容输出到标准输出的地址
- case
case 条件 in
模式1)
命令1
;;
[模式2)
命令2
;;
...............
模式n)
命令n
;;]
esac
说明: “条件”可以是变量、表达式、shell命令等; “模式”为条件的值,并且一个“模式”可以匹配多种值,不同值之间用竖线(|)联结 ; 一个模式要用双分号(;;)作为结束 ; 以逆序的case命令(esac)表示case分支语句的结束
模式的匹配可以使用通配符
- ?:仅匹配一个字符
- *:匹配任意字符
- [...]:配置方括号中的任意一个字符
- [!...] : 不匹配方括号中的任意字符
- [a-zA-Z] : -指定一个取值范围
常见循环结构:
- for
#!/bin/bash
echo "Input a directory:”
read dir
for file in `ls $dir`
do
echo $file
done
- while 和 until
while/until 条件
do
命令
done
- while循环中,只要条件为真,就执行do和done之间的循环命令;
- until循环中,只要条件不为真,就执行do和done之间的循环命令,或者说,在until循环中,一直执行do和done之间的循环命令,直到条件为真; 避免生成死循环 break continue shift