Как выполнить итерации по позиционным параметрам в сценарии Bash?

Поскольку TFS не делает исходно файлов исправления поддержки, наиболее распространенная вещь, которую я вижу, люди сделать на CodePlex просто zip измененные файлы, и загрузите zip. Координатор проекта тогда делает разность против их собственного контроля.

Однако, так как CodePlex также поддерживает TortoiseSVN, все больше людей использует это для создания их файлов исправления.

6
задан Paused until further notice. 20 November 2009 в 10:50
поделиться

5 ответов

Настройте цикл for следующим образом. С помощью этого синтаксиса цикл перебирает позиционные параметры, по очереди присваивая каждому из них «точку».

for point; do
  grep "$str" ${filename}${point}.txt 
done
7
ответ дан 8 December 2019 в 16:04
поделиться

There is more than one way to do this and, while I would use shift, here's another for variety. It uses Bash's indirection feature:

#!/bin/bash
for ((i=1; i<=$#; i++))
do
    grep "$str" ${filename}${!i}.txt
done

One advantage to this method is that you could start and stop your loop anywhere. Assuming you've validated the range, you could do something like:

for ((i=2; i<=$# - 1; i++))

Also, if you want the last param: ${!#}

5
ответ дан 8 December 2019 в 16:04
поделиться

См. здесь , вам нужно переключиться для пошагового переключения позиционных параметров.

2
ответ дан 8 December 2019 в 16:04
поделиться

Попробуйте что-то вроде этого:

# Iterating through the provided arguments
for ARG in $*; do
    if [ -f filename_$ARG.txt]; then
        grep "$str" filename_$ARG.txt 
    fi
done
1
ответ дан 8 December 2019 в 16:04
поделиться
args=$@;args=${args// /,}
grep "foo" $(eval echo file{$args})
0
ответ дан 8 December 2019 в 16:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: