我正在尝试在 bash 变量中运行命令,如下所示:
cmd="python -m mymodule 'argument 123 456' argument2=32 argument3=234"
$cmd
看起来它正在分割第一个字符串中的命令行参数,即使它用单引号引起来:
['argument', '123', '456', 'argument2=32', 'argument3=234']
我能做些什么来防止这种情况发生吗?我尝试使用转义双引号\"
、反引号`
,但没有任何作用,它仍然会在空格上分割第一个命令行参数。
答案1
对于您的情况,我建议将命令及其参数存储在数组中:
cmd=( "python" "-m" "mymodule" "argument 123 456" "argument2=32" "argument3=324" )
并将其运行为
"${cmd[@]}"