第3章:特殊字符
什么是“特殊字符”?如果一个字符除了字面意义外还有“元意义”,我们就称它为特殊字符。在 Bash 脚本中,特殊字符和命令、关键字一起,是脚本的基本构建块。
脚本和其他地方常见的特殊字符
注释符号。 以 # 开头的行(除了 #!)是注释,不会被执行。
# 这是一行注释
echo "Hello" # 这也是注释
注释也可以跟在命令后面,但不能和命令写在同一行后再继续写代码。
;
命令分隔符(分号)。 允许在同一行写多个命令。
echo hello; echo world
if [ -x "$filename" ]; then echo "文件存在"; cp $filename $filename.bak; else echo "文件不存在"; touch $filename; fi; echo "测试完成"
有时分号需要转义。
;;
case 选项的终止符(双分号)。
case "$var" in
abc) echo "$var = abc" ;;
xyz) echo "$var = xyz" ;;
esac
.
点命令(period)。 等价于 source,用于在当前 shell 中执行脚本。
点号作为文件名的一部分。 以点开头的文件是“隐藏文件”。
touch .hidden-file
ls -a # 可以看到 .hidden-file
单点(.)表示当前目录,双点(..)表示上级目录。
"
双引号。 保留大部分特殊字符的字面意义。
'
单引号。 保留所有特殊字符的字面意义,是最强的引用方式。
,
逗号运算符。 用于连接一系列算术操作,所有操作都会执行,但只返回最后一个结果。
let "t2 = ((a = 9, 15 / 3))" # a=9, t2=5
\
反斜杠。 用于转义单个字符。
echo \"Hello\"
/
斜杠。 作为文件路径分隔符,也用作除法运算符。
`
反引号。 命令替换,将命令输出赋值给变量。
result=`ls`
:
冒号。 空命令(NOP),什么都不做,返回真(0)。
while :; do
# 无限循环
done
空白符
空格、Tab、空行等都属于空白符。它们在脚本中用作命令和变量的分隔符。
注:
以上为常用 Bash 脚本特殊字符的简要说明和示例。