将命令分配给shell脚本中的某个变量后如何运行命令?示例:command_name=echo
现在,有没有办法使用 "$command_name hello world" 而不是 "echo hello world" ?
是的。确切的代码 ( $command_name hello world
) 将起作用。
确保引号(如果存在)仅放在命令名称和每个单独的参数周围。如果在整个字符串周围加上引号,它会将整个字符串解释为命令名称,这不是您想要的。
例如:
command_name="echo"
$command_name hello world
将被解释为:
echo hello world
(有效),而:
command_name="echo"
"$command_name hello world"
被解释为:
"echo hello world"
这不起作用,因为它试图找到一个调用的命令,echo hello world
而不是将 hello 和 world 解释为参数。
相似地,
command_name="echo hello world"
"$command_name"
由于同样的原因失败,而:
command_name="echo hello world"
$command_name
作品。
command_name='回声'
$command_name "你好世界"
使用bash
数组(当您有参数时这是最佳实践):
commandline=( "echo" "Hello world" )
"${commandline[@]}"
您可以eval
为此使用:
假设您有一个input_file
具有以下内容的:
a b c d e f g
现在在您的终端中尝试:
# this sed command coalesces white spaces
text='sed "s/ \+/ /g" input_file'
echo $text
sed "s/ \+/ /g" input_file
eval $text
a b c d e f g
#!/bin/bash
var="command"
"$var"
在脚本文件中为我工作