如何在shell脚本中将命令分配给某个变量后运行命令? 例: COMMAND_NAME =回声
现在,有没有办法使用“$ command_name hello world”代替“echo hello world”?
答案 0 :(得分: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
作品。
答案 1 :(得分:1)
COMMAND_NAME = '回响'
$ command_name“Hello World”
答案 2 :(得分:0)
#!/bin/bash
var="command"
"$var"
在脚本文件中为我工作
答案 3 :(得分: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
答案 4 :(得分:0)
使用bash
数组(当你有参数时这是最好的做法):
commandline=( "echo" "Hello world" )
"${commandline[@]}"