bash 使用其余参数

bash 使用其余参数

我有一个 bash 脚本,它采用名称和命令作为参数。像这样就很简单了

#myscript
echo $1
$2

我这样运行

bash myscripts myjob ls

它将回显“myjob”并运行ls命令。但是当命令是多个单词时,我必须为其提供引号,如下所示

bash myscripts myjob "ls -l"

现在我的问题是,有没有办法编写 shell 脚本,这样我就不必提供引号?就像,把一切都当作我的命令而不是第一个参数?可以用bash来做吗?

答案1

是的,您可以用来shift移动以前的参数:

#!/bin/bash
echo "$1"
shift 1
"$@"

shift N将移动计数器,以便跳过参数 1 到 N,参数 N+1 现在为 1,N+2 为 2,依此类推。

请注意,这意味着您的第一个命令 ( myjob) 是单字命令,只有第二个命令 ( ls -l) 可以是多字命令。

相关内容