引号
时间:2019-04-16 23:59:04 来源:igfitidea点击:
shell可以识别特殊字符(例如扩展变量和通配符)的含义。比如遇到$var,shell会解析为变量,用变量值代替。
echo "$PATH" echo "$PS1" echo /etc/*.conf
但是有时我们不想变量或通配符被解析。例如,不想打印$PATH的值,而是打印一个单词$PATH。
那么可以通过将特殊字符放到单引号中来禁止其被解释器解释。
例如
cho "Path is $PATH" ## $PATH 将被解析,使用其值替代
或者
echo 'I want to print $PATH' ## 单引号中$PATH 不会被解析,直接输出$PATH
反斜杠
反斜杠()可以改变单引号和双引号的特殊含义,即它将转义或取消下一个字符的特殊含义。
下面的例子将显示文件名双引号:
FILE="/etc/resolv.conf" echo "File is \"$FILE\" "
下面的例子将保留$
FILE="/etc/resolv.conf" echo "File is $FILE "
继续下一行的命令
反斜杠()还可以放在行的末尾用来在下一行继续很长的命令:
例如
# Purpose: clean /tmp/$domain check_temp_clean() { [ "$SERVER_MODE" = "daemon" ] || return 1 [ "$SERVER_MODE" = "init" ] && return 0 # 注意,使用反斜杠字符在下一行继续写未完成的命令 [ "$SERVER_MODE" = "clean" \ -a -e /usr/local/etc/nixcraft/lighttpd/disk_cache.init ] && return 0 return 1 }
反斜杠()还可以用来保护命令行参数。
比如我们想在HOME目录下查找所有.sh结尾的文件。
find $HOME -name *.sh # 错误
但是这样是会报错的, 通配符星号,我们需要使用反斜杠:
find $HOME -name \*.sh # 正确
或者
find $HOME -name "*.sh" # 正确