shell脚本
shell为非类型的解释型语言,即给变量赋值时就已为其定义。
#!/bin/bash //环境说明
- chmod o+x 文件名 //命令行运行
-
/bin/bash 文件名 //同上作用
-
$变量名 //引用变量
-
$0 //当前程序的名称(系统早先定义)
-
$n //第n个参数
-
$* //全部参数
-
$PWD //当前所在的目录
-
-f //文件是否存在
-
-d //目录是否存在
-
-s //检查文件是否为空(比较成功时表示含有数据;通常在删除文件时使用)
-
-nt;-ot //比较一个文件和另一个文件的新旧
-
-x;-w; //执行权限和写入权限
-
-eq(等于)-ne(不等于)-lt(小于)-gt(大于)-le(小于等于)-o(或,单方面成立)-a(与,多方面成立)-z(空字符串)
-
(())[[]] //双圆括号表示数学表达式,双方括号表示高级字符串处理函数 //通常用于算术判断或计算
-
if开头 fi结尾 if ();then(if语句只执行返回值为成功返回(0)的命令 而跳过错误命令)(可以使用布尔逻辑来执行if [] || [];if [] && [])
-
elif
-
case命令:eg:
case var in pattern1 | pattern2) command1;;
pattern3) command2;;
*) default command3;;
esac -
括号中开头和结尾要空格
-
while ();do
done -
for var in list
do
commands
done -
until语句 同while 但是相反 知道为0停止
-
C式for循环:eg:
for(( i=1; i<10; i++ ))
注意:变量的赋值可以包含空格;变量不以美元符号做前缀;迭代处理式中不含expr式 -
if和while后要空格
-
反引号的内容当成命令来执行
-
date +%y%m%d //日期按年月日格式输出
-
wc命令对数据中的文本计数,默认情况下生成三个值:文本行数,单词数,字节数
-
退出脚本时会返回一个0到255的整数值 可以使用$?来捕捉这个值 判断脚本是否执行成功(返回0一般表示执行成功)(可以自己设置脚本退出的返回代码在0到255之间的一个数;eg:exit 5;没设置时 1为未知错误,2为误用shell命令,126为用户无权限执行该命令,127为没有找到命令)
-
可以通过暂时更改环境变量中的IFS变量来使脚本忽略字段分隔符(空格,制表,分隔)eg: IFS = $'/n'
重定向:
- 输入重定向:eg:command < inputfile (箭头方向为数据流方向)
- 内置输入重定向:eg:
$wc << EOF
test.txt
EOF
(EOF为数据标记,开始和结尾处必须相同) - expr命令可以处理等式:eg
$expr 1+5
也可以使用$[1 + 5] - bc命令可以调用bash的计算器 需要离开时输入quit(scale设置小数位大小 同时可以在脚本中使用bc命令 eg:
variable`echo "options;express | bc"`