5.1 引用变量
List="one two three"
for a in $List # 空白符将变量分成几个部分。
do
echo "$a"
done
# one
# two
# three
echo "---"
for a in "$List" # 在单一变量中保留所有空格。
do # ^ ^
echo "$a"
done
# one two threeLast updated
List="one two three"
for a in $List # 空白符将变量分成几个部分。
do
echo "$a"
done
# one
# two
# three
echo "---"
for a in "$List" # 在单一变量中保留所有空格。
do # ^ ^
echo "$a"
done
# one two threeLast updated
variable1="a variable containing five words"
COMMAND This is $variable1 # 带上7个参数执行COMMAND命令:
# "This" "is" "a" "variable" "containing" "five" "words"
COMMAND "This is $variable1" # 带上1个参数执行COMMAND命令:
# "This is a variable containing five words"
variable2="" # 空值。
COMMAND $variable2 $variable2 $variable2
# 不带参数执行COMMAND命令。
COMMAND "$variable2" "$variable2" "$variable2"
# 带上3个参数执行COMMAND命令。
COMMAND "$variable2 $variable2 $variable2"
# 带上1个参数执行COMMAND命令(2空格)。
# 感谢 Stéphane Chazelas。#!/bin/bash
# weirdvars.sh: 输出一些奇怪的变量
echo
var="'(]\\{}\$\""
echo $var # '(]\{}$"
echo "$var" # '(]\{}$" 没有任何区别。
echo
IFS='\'
echo $var # '(] {}$" \ 被转换成了空格,为什么?
echo "$var" # '(]\{}$"
# 上面的例子由 Stephane Chazelas 提供。
echo
var2="\\\\\""
echo $var2 # "
echo "$var2" # \\"
echo
# 但是...var2="\\\\"" 不是合法的语句,为什么?
var3='\\\\'
echo "$var3" # \\\\
# 强引用是可以的。
# ************************************************************ #
# 就像第一个例子展示的那样,嵌套引用是允许的。
echo "$(echo '"')" # "
# ^ ^
# 在有些时候这种方法非常有用。
var1="Two bits"
echo "\$var1 = "$var1"" # $var1 = Two bits
# ^ ^
# 或者,可以像 Chris Hiestand 指出的那样:
if [[ "$(du "$My_File1")" -gt "$(du "$My_File2")" ]]
# ^ ^ ^ ^ ^ ^ ^ ^
then
...
fi
# ************************************************************ #echo "Why can't I write 's between single quotes"
echo
# 可以采取迂回的方式。
echo 'Why can'\''t I write '"'"'s between single quotes'
# |-------| |----------| |-----------------------|
# 由三个单引号引用的字符串,再加上转义以及双引号包住的单引号组成。
# 感谢 Stéphane Chazelas 提供的例子。