1.基础语法
下面是几个杂乱的例子(我尽可能让它包含更多的语法)
- 使用变量
#!/bin/bash
echo -n "The time and date are": `date` #-n:不换行,引号可以不加,``之间视为命令
echo "User info for userid: $USER" #出现美元符会被认为在引用一个变量,加\可避免
echo UID: ${UID} #变量两侧允许用花括号
var1="this is a variable" #变量名区分大小写,长度不超过20
var2=$var1 #引用需要用美元符,赋值不需要,等号和值之间不能出现空格
echo $(echo $var2) #命令除了``标识,也可以用$()
today=$(date +%y%m%d)
ls /usr/bin -al > log.$today
- 输入/出重定向
#!/bin/bash
file=log.$(date +%y%m%d)
date > $file #有内容会被覆盖
date >> $file #往文件追加
echo endofthfile >> $file
wc < $file #输入重定向,行数 词数 字节数
#内联输入重定,指定一个文本标记来划分输入数据的开始和结尾,数据的开始和结尾文本标记必须一致
wc << endofthfile
`cat $file`
endofthfile
- 管道
ls -al|more #不会比重定向显得笨拙
- 数学表达式
#!/bin/bash
echo $(expr 2 \* 2) #expr命令可以处理表达式,但显得笨拙
echo $[2 * 2] #用方括号方便得多,但也只支持整数运算
#一种浮点解决方案,bash计算器bc
var1=$(echo "scale=4; 3.44 / 5" | bc)
echo The answer is $var1
variable=$(bc << EOF
var=3.1415
var2=var * var
print var2
EOF
)
echo $variable #前面那句print不会有输出
- 退出状态码
#!/bin/bash
source ./math.sh
echo $? #获取上一个文件的退出状态码
exit 255 #返回退出状态码,0~255的区间
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效的退出参数 |
128+x | 与Linux信号x相关的严重错误 |
130 | 通过Ctrl+C终止的命令 |
255 | 正常范围之外的退出状态码 |