以下是一个脚本,其中空变量被单引号替换。如果变量不为空,则我们具有正确的替换。
$ set -x; aa=""; bb=`curl "$aa" -vvv`; set +x
+ aa=
++ curl '' -vvv
Run Code Online (Sandbox Code Playgroud)
需要注意的是,单引号代替了空变量。
当变量不为空时,一切工作正常,如下所示:
$ set -x; aa="google.com"; bb=`curl "$aa" -vvv`; set +x
+ aa=google.com
++ curl google.com -vvv
Run Code Online (Sandbox Code Playgroud)
问题1:为什么使用空变量或带空格的变量导致引入单引号?Q2:如何防止单引号代替空变量?
现在,我可以删除双引号,并且一切正常,但是如果有的话,我需要保留空格。
谢谢。
单引号没有被引入,它们只是用来表明您正在传递一个空参数。您使用的双引号导致传递空参数。如果您不想要任何参数,但要允许变量中包含空格,则必须执行以下操作:
curl ${aa:+"$aa"} -vvv
Run Code Online (Sandbox Code Playgroud)
这与curl ${aa+"$aa"} -vvvaa是空字符串时有所不同,但是从您的描述来看,您似乎想要前者。
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |