我有一个 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
) 可以是多字命令。