====================================== 引号的特殊效果就是,保护字符串中的特殊字符不被shell或者是shell脚本重新解释或者扩展.(我们这里所说的"特殊"指的是一些字符在shell中具有的特殊意义,比如*) 如: bash$ ls -l [Vv]* -rw-rw-r-- 1 bozo bozo 324 Apr 2 15:05 VIEWDATA.BAT -rw-rw-r-- 1 bozo bozo 507 May 4 14:25 vartrace.sh -rw-rw-r-- 1 bozo bozo 539 Apr 14 17:11 viewdata.sh bash$ ls -l '[Vv]*' ls: [Vv]*: No such file or directory
在我们一般的生活中,引号内的内容往往有特殊的含义,而在Bash中,当我们引用一个字符串, 我们是保护它的字面含义.
特定的程序和工具能够重新解释或扩展特殊的字符.引用的一个重要的作用就是保护命令行中的参数,但还是允许正在调用的程序来扩展它. bash$ grep '[Ff]irst' *.txt file1.txt:This is the first line of file1.txt. file2.txt:This is the First line of file2.txt.
注意 grep [Ff]irst *.txt在Bash下的行为(其实就是正则表达式么),[1]
引用还可以抑制echo命令的换行作用.
bash$ echo $(ls -l) total 8 -rw-rw-r-- 1 bozo bozo 130 Aug 21 12:57 t222.sh -rw-rw-r-- 1 bozo bozo 78 Aug 21 12:57 t71.sh
bash$ echo "$(ls -l)" total 8 -rw-rw-r-- 1 bozo bozo 130 Aug 21 12:57 t222.sh -rw-rw-r-- 1 bozo bozo 78 Aug 21 12:57 t71.sh |