установить новую переменную в bash

У меня есть список с именем zip-файлов. Я хочу написать цикл for, чтобы разархивировать их в данный каталог.

Как установить переменную в bash, которая исходит из части имен zip?

for i in `cat zipfiles.txt`; do WIDTH3="${cat zipfiles.txt | rev | cut -c47-54 | rev}"
-1
задан 30 January 2018 в 16:16

2 ответа

Вы перебираете строки из zipfiles.txt. Для каждого цикла вы устанавливаете переменную $i со значением текущей строки. Затем вы отрезаете часть из cat zipfiles.txt, которая не имеет смысла.

Вместо этого вы хотите вырезать из $i. Кроме того, ваш синтаксис неверен, вы должны использовать $(any_command) вместо ${any_command}.

WIDTH3=$(echo "$i" | rev | cut -c47-54 | rev)

В любом случае, лучше использовать while read [...] вместо for ...:

while IFS= read -r line; do WIDTH3=$(echo "$line" | rev | cut -c47-54 | rev) do_something done < zipfiles.txt
2
ответ дан 17 July 2018 в 21:55

Вы перебираете строки из zipfiles.txt. Для каждого цикла вы устанавливаете переменную $i со значением текущей строки. Затем вы отрезаете часть из cat zipfiles.txt, которая не имеет смысла.

Вместо этого вы хотите вырезать из $i. Кроме того, ваш синтаксис неверен, вы должны использовать $(any_command) вместо ${any_command}.

WIDTH3=$(echo "$i" | rev | cut -c47-54 | rev)

В любом случае, лучше использовать while read [...] вместо for ...:

while IFS= read -r line; do WIDTH3=$(echo "$line" | rev | cut -c47-54 | rev) do_something done < zipfiles.txt
2
ответ дан 23 July 2018 в 22:32
  • 1
    while IFS='' read -r line || [ -n "$line" ], чтобы гарантировать, что последняя строка файла также читается, если у нее нет новой строки. – dessert 30 January 2018 в 17:12

Другие вопросы по тегам:

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