我在这个网站和其他地方尝试了不同的建议,但没有任何效果。我需要将一些参数传递给shell脚本,然后将它们连接到一个字符串上,然后将其作为命令启动。所以我这样做
command="perl perl_script.pl"
for arg
do
command+="$arg "
done
eval $command
但是我收到了这个错误
bowtie_script_simple.sh: 43: bowtie_script_simple.sh: comando+=-n : not found
bowtie_script_simple.sh: 43: bowtie_script_simple.sh: comando+=3 : not found
根据我见过的其他线程应该可行。有什么想法吗?
由于
答案 0 :(得分:2)
command="$command $arg"
你的args是否有(或可能有)空格?为了安全起见,你应该进一步引用。
答案 1 :(得分:2)
作为字符串连接在处理带空格的args时会带来困难。使用bash / zsh / ksh,使用数组效果更好:
command=(perl perl_script.pl)
for arg; do
command+=("$arg")
done
# or more simply
# command=(perl perl_script.pl "$@")
# now, execute the command with each arg properly quoted.
"${command[@]}"
从您的错误消息,看起来您正在使用/ bin / sh - 该shell没有var+=string
构造 - 必须使用具有更多功能的shell。
答案 2 :(得分:1)
我认为这应该有效:
command="perl perl_script.pl"
for arg in $@
do
command="$command $arg"
done
$command