单引号和双引号的区别
单引号:必须成对使用,它可以保护所有的字符不被翻译。如变量$1,和奇数个单引号的作用相同,偶数个单引号=1个双引号
双引号:必须成对出现,它可以保护一些元字符不被翻译,但允许变量和命令替换,和偶数个单引号的作用相同。另外,当引用时(使用一个变量的值)用双引号有助于防止由于空格导致单词分割开和由于识别和扩展了通配符而导致的不必要匹配。
反斜线:shell也不解释转义符后的字符,'$1'和"$1"一样
单引号和双引号可以互相保护
例子1:
$ cat test.sh
#!/bin/bash
echo "$1"=$1 "$2"=$2
echo '$1'=$1 '$2'=$2
$ ./test.sh hello world
hello=hello world=world
$1=hello $2=world
例子2:
#!/bin/bash
echo '$1'=$1
echo '$1'='$1'
echo '$1'="$1" //一个双引号
echo '$1'=$1
echo '$1'='$1'
echo '$1'=''$1'' //两个单引号
例子3:
单引号中的反斜线不被翻译
$echo '\'
\
例子4:
单引号保护双引号
$echo 'Mother yelled, "Time to eat!" '
Mother yelled, "Time to eat!"
例子5:
双引号保护单引号
$echo "Hi, I'm glad to mee you"
Hi, I'm glad to meet you
例子6:
双引号可以防止由于空格导致单次分割
$ names="name1 name2 name3"
$ for name in $names; do
> echo "$name"
> done
name1
name2
name3
$ for name in "$names"; do
$ echo "$name"
$ done
name1 name2 name3