Unix Script для обработки нескольких имен файлов - PullRequest
2 голосов
/ 14 октября 2010

Я пишу скрипт, который будет складывать, сортировать и считать текст в файле. Мне нужно спроектировать программу так, чтобы, если ей было дано несколько имен файлов в командной строке, она обрабатывала каждое из них отдельно, одно за другим. Я думаю, что я мог бы написать цикл, но я еще не очень много знаю о них, поэтому, если возможно, хотел бы попробовать другие варианты. Есть ли другие опции, которые я могу добавить к этому, чтобы в командной строке можно было ввести более одного имени файла?

если тест $ # -lt 1 затем echo "Использование: $ 0 Введите хотя бы одно имя файла ДНК" выход фи if test -r $ * затем сложить -w3 $ * | сортировать | uniq -c | сортировать -k1,1nr -k2 еще
echo "использование: $ * должно быть читабельным" выход фи

Nena

Ответы [ 2 ]

3 голосов
/ 14 октября 2010

for цикл будет уместен здесь. Следующая форма используется для итерации по позиционным аргументам:

for f; do
   # do work here using "$f" as the current argument
done

Это эквивалентно более подробной версии:

for f in "$@"; do
   # do work here using "$f" as the current argument
done
1 голос
/ 14 октября 2010

Вы можете использовать цикл while и shift для перебора аргументов командной строки один за другим как:

if test $# -lt 1  # insufficient arguments.
then
  echo "usage: $0 Enter at least one DNA filename"
  exit
fi

# loop through the argument on by one.
# till their number($#) becomes 0.
while test $# -gt 0  
do    
if test -r "$1"  # use $1..$* represent all arguments.
then
  fold -w3 "$1" | sort | uniq -c | sort -k1,1nr -k2
else
  echo "usage: $1 must be readable"
  exit
fi

# shift so that 2nd argument now comes in $1.
shift

done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...