前面已经说过,shell 脚本几乎就是一组保存下来的 shell 命令。掌握了格式和运行方法之后我们已经可以使用脚本来帮助完成工作了。但相较于平时一行行地敲命令,脚本还是有一些特别之处让我们可以实现更强大的功能。
变量
在单行敲 shell 命令时我们可能不会经常使用变量,但在多行脚本中 shell 变量可以发挥很大作用。下面有一些变量使用的方法需要注意:
str='test' # 定义一个变量 str 存储字符串 test
echo $str # $变量名,得到变量的值。
echo "str is $str" # 在双引号中 $变量名 会被解析为变量的值。
echo "${str}123" # 为避免和其他字符混淆可以 ${变量名} 来解析变量值。
echo ${#str} # 获得变量的长度。这里是字符串 test 的长度,即 4
echo "pwd is $(pwd)" # $(shell 命令) 解析为 shell 命令的输出
echo "pwd is `pwd`" # 反引号的内容也解析为 shell 命令的输出
参数
像命令行程序一样,脚本也可以获得用户运行时传递的参数。获得方法为:
$# # 调用脚本所传递的参数数量
$0 # 当前脚本的文件名
$1-9 # 调用脚本时给出的第1个到第9个命令行参数
用户输入
除了获取参数外,脚本也可以请求用户输入以达到交互操作的效果。方法是 read 变量名 请求用户输入,输入结束后系统将把用户输入的值保存到指定的变量中。例如下面的脚本请求用户输入名字然后将它显示出来:
#!/bin/bash
echo 'What is your name?'
read name # 请求用户输入并将输入值保存到变量 name 中
echo "Hello $name"