在 bash 脚本中,我们可以使用\
. 有没有办法从代码中做同样的事情?
$ a=hello\ world
$ echo $a
hello world
$ b=${a:?} # ? used as dummy; it will not work
$ echo $b
hello\ world
调用者.bash
#!/bin/bash
name=$1
if [[ -n $name ]]; then
where_query="--where name $name"
fi
mycommand $where_query
mycommand,一个外部程序,我们不能修改。添加的虚拟代码仅用于说明目的。
#!/bin/bash
for i in "${@}"
do
echo "$i"
done
实际的
$ caller.bash "foo bar"
--where
name
foo
bar
预期的
$ caller.bash "foo bar"
--where
name
foo bar
对于简单的字符串变量,您尝试做的事情是不可能的。您正在尝试将三个参数或不传递给“外部程序” mycommand。您应该使用 bash 数组。请尝试以下方法:
调用者.bash:
您的脚本也有引用错误。在尝试使用它们之前,您应该在https://www.shellcheck.net/检查所有脚本。