我正在编写一个 bash 脚本,它必须将一个变量传递给另一个程序:
./program $variable
问题是,绝对有必要将 $variable 作为单个参数传递,如果它包含空格则不是这种情况。
variable=Hello World
./program $variable
-> program receives two arguments: 'Hello' 'World'
引用它根本没有做任何事情(做得好,bash 开发人员):
variable=Hello World
./program "$variable"
-> program receives: 'Hello' 'World'
双引号会做一些疯狂的事情(干得好,bash 开发人员):
variable=Hello World
./program "'$variable'"
-> program receives: "'Hello" "World'"
是否有捷径可寻?哎呀,有没有办法做到这一点?
更新:好的,因为问题似乎不是 bash,这里有一些附加信息。我传递参数的程序是一个 python 脚本。在不以任何方式修改参数的情况下,我得到
print sys.argv
-> ['/usr/bin/program', "'Hello", "World'"]
我该如何解决?
编辑:不,我没试过
variable="Hello World"
因为我从不声明 $variable。它没有在我的 bash 函数中声明,也不允许我修改它。
编辑:好的,我让它这样工作。
local temp="$variable"
./program "$temp"
不过,我想知道为什么它以这种方式工作,而不是以其他方式工作。