系统编程 期末复习二 Shell编程
一、输入/输出重定向
标准输入为0
标准输出为1
标准错误为2
- 输入重定向:命令 < 文件名
- 输出重定向:命令 > 文件名
- 错误重定向:命令2 > 文件名
- 使用&引用文件
二、管道
- 使前一个的输出作为后一个命令的输入,符号为|
三、命令连接符
- 分隔命令—— ;
- 连接命令,逻辑与—— &&
- 连接命令,逻辑或—— ||
四、Shell语法
4.1 执行Shell脚本
- chmod +x filename
./filename - sh file
4.2 变量定义
- 使用的同时创建
- 变量名由字母、数字和下划线组成,开头只能是字母或下划线
- 赋值格式:“变量名=值”,等号前后不能有空格
- readonly var 表示var为只读变量,后续不可赋值
4.3 变量的引用
- 使用$引用变量
- 使用echo输出
- #var 取var的长度
4.4 变量的输入
- read 变量名
4.5 四种“特殊”变量
- 环境变量
– export 变量名=值
–可用于创建该变量的Shell及派生Shell - 位置变量
–代表传入脚本的参数位置
–$0为文件名
–shift可以移动位置变量对应的参数,每次左移一个位置,移出去的参数不可再使用 - 标准变量
–也是环境变量
–在bash环境建立时生成 - 特殊变量
–传递到脚本或函数的参数数量:#
–上个命令的执行情况:?
–运行脚本的进程id:$
–传递给脚本或函数的所有参数:*
4.6 变量的运算
- let
–let 表达式 - expr
–expr 运算式 - !! 运算符与变量或数据之间要有一个空格
- !! 使用``嵌入expr到等式中
4.7 条件语句
4.7.1 条件判断
- 字符串比较
- 算术比较
- 针对文件的条件测试
4.7.2 if语句
格式:
if [条件语句];then
…
elif [条件语句];then
…
…
else
…
fi
4.7.3 select语句
格式:
select 变量 in 列表
do
…
[break]
done
!! 如果不写break无法退出select语句
4.7.4 switch-case语句
格式:
case var in
选项1)…;;
选项2)…;;
选项3)…;;
…
*)…
esac
exit 0
4.8 循环语句
4.8.1 for循环
格式:
for 变量 in 变量列表 do
…
done
4.8.2 while循环
格式:
while [ 表达式 ]
do
…
done
4.8.3 until循环
格式:
until [ 表达式 ]
do
…
done
五、Shell脚本调试
- 不执行脚本,仅检查语法:-n
- 执行脚本过程中,打印执行的脚本命令:-v
- 将用到的脚本内容打印到屏幕上:-x
六、Shell函数
格式:
[function] 函数名[()]
{
…
[return int]
}
- []表示内容可省略
- 函数中定义的变量是全局变量,可用local定义局部变量