2

将命令分配给shell脚本中的某个变量后如何运行命令?示例:command_name=echo

现在,有没有办法使用 "$command_name hello world" 而不是 "echo hello world" ?

4

5 回答 5

3

是的。确切的代码 ( $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

作品。

于 2012-11-21T19:32:18.567 回答
1

command_name='回声'

$command_name "你好世界"

于 2012-11-21T19:32:57.367 回答
0

使用bash数组(当您有参数时这是最佳实践):

commandline=( "echo" "Hello world" )
"${commandline[@]}"
于 2012-11-21T21:45:08.320 回答
0

您可以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
于 2012-11-21T19:39:06.080 回答
0
#!/bin/bash
var="command"
"$var"

在脚本文件中为我工作

于 2012-11-21T19:31:51.140 回答