被单引号用括住的内容,将被视为单一字串。在单引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
双引号
目的: 为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出.被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。 反引号 目的:是为了在双引号内保持函数转换. 但单引号内其无作用. 在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用反单引号来做。 fdv=`date +%F`echo "Today $fdv" 在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变数中。 1. [root@jszwl161 SP49EP9]# echo '$*><!' $*><! 2. [root@jszwl161 SP49EP9]# echo 'she is crying: "help"' she is crying: "help" 3. [root@jszwl161 SP49EP9]# echo '\\\\' \\\\ 4. [root@jszwl161 SP49EP9]# echo 'hah 'test'' hah test #略去了所有' 5. [root@jszwl161 SP49EP9]# echo ' today is `date`' today is `date` #反引号在此无法实现函数功能. 双引号 目的: 为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出. 被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。 1. [root@jszwl161 SP49EP9]# echo "today is `date`" today is Fri Jul 4 08:03:34 GMT 2008 2. [root@jszwl161 SP49EP9]# echo "today is 'date'" today is 'date' 3. [root@jszwl161 SP49EP9]# echo "\\\\" \\ 4. [root@jszwl161 SP49EP9]# echo "test "test"" test test 反引号 目的:是为了在双引号内保持函数转换. 但单引号内其无作用. 在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用反单引号来做。 fdv=`date +%F`echo "Today $fdv" 在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变数中。 1. [root@jszwl161 SP49EP9]# echo "today is `date`" today is Fri Jul 4 08:03:34 GMT 2008 #将函数date转换. 2. [root@jszwl161 SP49EP9]# echo ' today is `date` ' today is `date` #在单引号内无作用.