shell脚本关键在于输入多个命令并且处理每个命令的结果,将一个命令结果传给另外一个命令。
两个命令在一起运行,用分号隔开
echo 可以显示简单的文本字符串
echo this is a test 可以不加双引号
但是如果字符串中有双引号的话,就要用其他引号将字符串圈起来
echo "this is a test to see if you're paying attention"
在同一行显示一个文本字符串作为命令输出
echo -n "the time and date are:"
之后输出的内容就会在一行
使用变量,$PATH
但是要使用美元符号,就要加反斜杠
echo "the cost of the item is $15"
${variable}引用的变量,用来帮助识别美元符号后的变量
shell脚本会自动决定变量值的数据类型
引用一个变量值的时候需要使用美元符,但是引用变量来进行复制的时候不需要美元符。
没有美元符,shell会将其解释为文本字符串
反引号允许将shell命令输出赋给变量
testing=`date`
date +%y%m%d
110131
就算是这样
testing=date
$testing就会直接运行date命令```
###输出重定向
command > outputfile
>会覆盖已有的文件
>>来追加数据
输入重定向
<
命令总是在左侧,重定向符号指向数据流动的方向,表示从输入文件流向命令
wc < test6
内联输入重定向<<
指定一个文本标记来划分要输入数据的开始和结尾
command << marker
data
marker
比如这样
wc << EOF
test string 1
test string 2
test string 3
EOF
取代将命令的输出重定向到文件,可以重定向输出到另一个命令,这个过程是管道连接
command1 | command2
Linux系统其实会同时运行这两个命令,系统内部连接起来,第一个命令产生输出的同时,输出会立即被送到第二个命令,传输数据不会用到任何中间文件和缓冲区域
管道最流行的用法是将命令产生的长输出结果通过管道传送给more命令
对ls命令非常普遍,可以强制在每屏数据的末尾停下来
ls -l | more```
执行数学运算
使用expr命令
expr 1 + 5
expr也可以识别其他的操作符
如> < | & <= >= = != + - * / %
index length
expr 5 \* 2
将星号转义,因为*表示通配符
要在shell脚本中将一个数学算式的结果赋给一个变量,需要反引号来获取expr命令的输出
var3=`expr $var2 / $var1`
或者var3=$(expr $var2 / $var1)```
###执行数学表达式更简单的方法
$[ operation ]
var1=$[ 1 + 5 ]
echo $var1
并且不用误解乘号
var2=$[ $var1 * 2 ]
bash shell只支持整数运算```
退出脚本
退出状态码,命令结束运行的时候传给shell,捕获这个值并且在脚本中使用
$? 成功的时候为0
exit命令
shell脚本会以脚本中最后一个命令的退出状态码退出
exit可以指定一个退出状态码