将不同的参数集传递给 Linux Bash 脚本中的不同命令

将不同的参数集传递给 Linux Bash 脚本中的不同命令

我正在编写一个 bash 脚本,它使用第一个输入参数和第二个参数foo.sh运行命令:barbaz

#! /bin/bash
bar "$1"
baz "$2"

现在我想使其foo.sh更加灵活,拥有可选数量的bar和参数baz,如下所示:

./foo.sh bar_args="-x -v message=hello" baz_args="-d -m"

我想foo.shbar_args输入参数传递给和bar。如果没有给出任何一个参数,我也希望它能够正常工作(例如,如果没有提供,则应该在没有任何参数的情况下调用)。baz_argsbazfoo.shbar_argsbar

这个怎么做?

答案1

你可以做到这一点,但它有点脆弱

foo.sh 将会像这样

#! /bin/bash
declare "$@"       # evaluate the params as variable declarations
bar $bar_args      # not quoted!
baz $baz_args      # not quoted!

然后,./foo.sh bar_args="-x -v message=hello" baz_args="-d -m" 就会像你希望的那样工作。

不要尝试传递带有空格的消息,无法以这种方式完成。

相关内容