如何在"$*"中排除bash输入参数

Kev*_*vin 2 variables bash arguments

基本上,我希望能够调用$*在bash脚本,表示所有参数的脚本调用后,但我希望它忽略了第2位.(1美元和2美元)

所以为了简单起见,如果所有脚本都只是回显参数,它应该表现如下:

$ myscript.sh first_argument second_argument foo bar baz blah blah etc
foo bar baz blah blah etc
Run Code Online (Sandbox Code Playgroud)

是否有捷径可寻?顺便说一句,第一个和第二个参数后的文本数量应该没有限制,如果知道了这个数量,我可以轻松地单独调用它们,比如$ 3 $ 4 $ 5 $ 6 ...

我希望这很清楚.

谢谢,

凯文

Gor*_*son 7

您可以使用数组切片的变体来挑选一系列参数.要打印3上的参数,请使用:

echo "${@:3}"
Run Code Online (Sandbox Code Playgroud)

shift基于-based的选项不同,这不会为了其他目的搞乱参数列表.


Ker*_* SB 5

用途shift

#!/bin/sh

shift 2

echo $@
Run Code Online (Sandbox Code Playgroud)

./myscript A B C D输出C D

如果参数少于2个,将失败,用于$#检查。

这是有关shift的相当全面的文档