如果我有一个包含未转义的美元符号的变量,有什么办法可以回显变量的全部内容?
例如调用脚本:
./script.sh "test1$test2"
然后如果我想使用参数,它会被“截断”,如下所示:
echo ${1}
test1
当然,单引号变量名称没有帮助。我不知道如何引用它,以便在脚本收到参数后我至少可以自己转义美元符号。
如果我有一个包含未转义的美元符号的变量,有什么办法可以回显变量的全部内容?
例如调用脚本:
./script.sh "test1$test2"
然后如果我想使用参数,它会被“截断”,如下所示:
echo ${1}
test1
当然,单引号变量名称没有帮助。我不知道如何引用它,以便在脚本收到参数后我至少可以自己转义美元符号。
问题是脚本首先收到“test1”,它不可能知道有对空(未声明)变量的引用。$
在将其传递给脚本之前,您必须对其进行转义,如下所示:
./script.sh "test1\$test2"
或者像这样使用单引号'
:
./script.sh 'test1$test2'
在这种情况下,bash 不会从该参数字符串中扩展变量。
该变量在脚本运行之前被替换。
./script.sh 'test1$test2'
通过使用单引号,元字符 like$
将保留其文字值。如果使用双引号,变量名将被插值。
正如 Ignacio 告诉您的那样,该变量已被替换,因此您的脚本将./script.sh test1
作为$0
and的值$1
。
但即使在您使用文字引号传递参数的情况下,您也应该始终"$1"
在echo "${1}"
. 这是一个很好的做法。