Eul*_*lar 9 shell bash shell-script
我有一个 bash 脚本,它采用名称和命令作为参数。像这样就很简单了
#myscript
echo $1
$2
Run Code Online (Sandbox Code Playgroud)
我这样运行
bash myscripts myjob ls
Run Code Online (Sandbox Code Playgroud)
它将回显“myjob”并运行命令ls
。但是当命令是多个单词时,我必须为其提供引号,如下所示
bash myscripts myjob "ls -l"
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,有没有办法编写 shell 脚本,这样我就不必提供引号?就像,把一切都当作我的命令而不是第一个参数?可以用bash来做吗?
Fel*_*xJN 10
是的,您可以用来shift
移动以前的参数:
#!/bin/bash
echo "$1"
shift 1
"$@"
Run Code Online (Sandbox Code Playgroud)
shift N
将移动计数器,以便跳过参数 1 到 N,参数 N+1 现在为 1,N+2 为 2,依此类推。
请注意,这意味着您的第一个命令 ( myjob
) 是单字命令,只有第二个命令 ( ls -l
) 可以是多字命令。