В сценарии оболочки удара, пишущий для цикла, который выполняет итерации по строковым значениям

Голубятня или Курьер являются, вероятно, Вашим лучшим выбором.

24
08.09.2012, 18:50
2 ответа

Правильный синтаксис следующие:

#!/bin/bash

for fname in a.txt b.txt c.txt
do
  echo $fname
done
39
27.01.2020, 19:41
  • 1
    Кроме того, принимая массив имен fnames=( a.txt b.txt c.txt ) можно использовать синтаксис for f in ${fnames[@]}; do echo $f; done. –   08.09.2012, 22:12
  • 2
    Это верный это for fname in a.txt b.txt c.txt и for fname in "a.txt" "b.txt" "c.txt" привести к идентичным результатам? –  Andrew 08.09.2012, 22:39
  • 3
    Andrew, да это верно. Они приведут к идентичному –  Ali Gangji 08.09.2012, 23:29
  • 4
    Конечно, необходимо использовать for f in "${fnames[@]}"; do echo $f; done (с кавычками вокруг ${fnames[@]}) если fnames значения могли бы содержать пробел.   И необходимо использовать "$f", особенно, если Вы делаете что-либо более сложное, чем echo (например, cat или cp).   (И даже если Вы только делаете echo, необходимо использовать printf вместо этого.) –  Scott 24.04.2016, 00:02
  • 5
    я думаю @user13742, должен быть также отмечен в ответе. –  Fallenreaper 13.01.2018, 06:53

Мне кажется, вы должны просто сделать ...

printf %s.txt\\n a b c
1
27.01.2020, 19:41

Теги

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