我有一个外壳脚本:
#!/bin/bash
exec_command -k -q $1
for i in $@
do
grep --color=always "$i" file
done
我将脚本称为
./grepskript -v searchstring1 searchstring2
我想使用第一个参数exec_command
和循环的所有其他参数do
。我该怎么做?
答案1
shift
根据需要使用该命令推送位置参数。在您的情况下,这样做会将(即第一个参数)与其余参数shift 1
分开。$1
同样,shift 2
将从参数列表中移动前 2 个参数,依此类推。并始终记住引用您的变量/参数不是让 shell 进行分词。
#!/bin/bash
exec_command -k -q "$1"
shift 1
for i in "$@"; do
grep --color=always "$i" file
done
请参阅shift
手册页以了解更多信息。这是跨 shell 可用的 POSIX 兼容选项。
或者另一种方法(bash
特定的)对参数列表进行基于索引的扩展,$@
如下所示,从病房的第二个元素开始循环。
#!/bin/bash
exec_command -k -q "$1"
for i in "${@:2}"; do
grep --color=always -- "$i" file
done
另外,在第一种方法中迭代位置参数时,您只需这样做
for i; do
grep --color=always -- "$i" file
done