变量中的命令

变量中的命令

我正在尝试运行一个语句,其中命令的名称位于变量中。例如:

my_command='/path/to/some/command'

$my_command -f foo -b bar -s something else 

但上面的方法不起作用。我收到的错误表明 shell 正在尝试将我的参数解释为命令。

我如何在 Bash 和 Zsh 中执行此操作?

答案1

要存储命令,您可以使用一个函数:

在任何类似 Bourne 的 shell 中,但是bash

mycommand() /path/to/some/command some fixed args "$@"
mycommand other args

在 中bash,您需要大括号:

mycommand() { /path/to/some/command some fixed args "$@";}

(这些支架在其他外壳中不会造成伤害,因此最好在需要便携时使用它们)

如果您是一个csh瘾君子,您也可以使用alias.

您可以使用变量,如下所示:

mycommand=/path/to/some/command

但请记住,在除了 之外的每个 shell 中zsh,您都需要引用扩展:

"$mycommand" its args

如果你想存储命令和超过第 0 个参数,你可以在支持它们的 shell 中使用数组(bash并且zsh这样做)

mycommand=(/path/to/some/command some fixed args)
"${mycommand[@]}" some other args

zsh你可以摆脱

$mycommand some other args

只要没有固定参数是空的。

答案2

下面这些行在 bash 下对我有用:

mycommand=/usr/bin/find
$mycommand -type d

您的问题可能源于“/path/to/some/command”以及它的作用或尝试执行的操作。没有看到实物,很难说。

相关内容