bash - 遍历 bash 脚本中的参数并使用它们的数字

标签 bash loops command-line

如果我想遍历所有参数,就像for i in "$@"一样简单;做...。但是,假设我想从第二个参数开始,并利用参数的位置进行一些基本计算。

例如,我想将这些命令缩短为一个循环:

grep -v 'foobar' "$2" | grep -f $file > output1.txt
grep -v 'foobar' "$3" | grep -f $file > output2.txt
grep -v 'foobar' "$4" | grep -f $file > output3.txt
grep -v 'foobar' "$5" | grep -f $file > output4.txt

我尝试了很多变体,比如 for i in {2..5};做 grep -v 'foobar' "$$i"| grep -f $file > output$(($i-1)).txt;完成;但是,bash 扩展似乎不是这样工作的。

编辑:

似乎我犯了一个错误,没有强调我需要使用参数的位置/数字(即 $2 中的 2)。这很重要,因为稍后会在脚本中单独使用输出文件。到目前为止,所有提供的答案似乎都是正确的,但我不知道如何使用它们来利用参数的“数字”。

最佳答案

已经有几个正确答案,另一种方式可能是:

for (( i=2; i <= "$#"; i++ )); do
    echo "arg position: ${i}"
    echo "arg value: ${!i}"
done

关于bash - 遍历 bash 脚本中的参数并使用它们的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37053780/

相关文章:

command-line - 使用批处理文件打开一系列文件中的一个

command-line - for/f 在 .bat 文件中不起作用,但它在 Windows 2003 中的命令提示符下起作用

json - docker 和 json 格式

php - array_intersect 可变数量的数组

bash - 过滤 docker-compose 输出

python - 循环一个函数直到它达到阈值然后完成脚本

javascript - 谷歌应用程序脚本 : Speed up/alternative to loop

command-line - 如何使用命令将挂起的更改列表文件移动到默认值

linux - Bash:执行前突出显示命令(set -x)

regex - sed - 如何获得段落的前两句?