shell 程序设计
管道和重定向
重定向输出
|
|
shell 的语法
- 变量: 字符串、数字、环境和参数
- 条件: shell 中的bool值
- 程序控制: if、elif、for、while、until、case
- 命令列表
- 函数
- shell 内置命令
- 获取命令的执行结果
- here文档
变量
区分大小写,不需要声明,默认被看做字符串并以字符串存储。
条件
检查一个文件是否存在: test -f <filename>。
test 使用条件的类型归为3类: 字符串的比较、算术比较和文件相关的条件测试。
12345
test condition/cmd ;then...else...fi
控制语句
if 语句
1234567if [[ condition ]]; thenstatementselif [[ condition ]]; thenstatementselsestatementsfifor 语句
123for variable in value; dostatementsdonewhile
123while [[ condition ]]; dostatementsdoneuntil
123until [[ condition ]]; dostatementsdonecase
1234case word inpattern );;esac命令列表
AND 列表
1statements1 && statements2 && ...OR 列表
1statements1 || statements2 || ...语句块
如:123456get_confirm && {grep -v "$cdcatnum" $tracks_file > $temp_filecat $temp_file > $tracks_fileechoadd_record_tracks}
函数
|
|
命令
: 命令是一个空命令,相当于true
continue
. 在当前目录中执行
echo
eval:允许对参数进行求值
exec:将当前的shell替换为一个不同的程序
exit: 126文件不可执行/127命令未找到/128 出现一个信号
export: 将作为他参数的变量导出到子shell中,并使之在子shell中有效
expr: 将它的参数当做一个表达式来求值
printf: “format string” parameter1 parameter2 …
set: 为shell设置参数变量
shift: 左移参数
trap:指定在接收到信号后要采取的行动
unset: 从环境中删除变量或者函数
find: find / -mount -name test -print
find [path] [options] [tests] [actions]
grep: 使用一个选项、一个要匹配的模式和要搜索的文件
grep [options] PATTERN [FILES]