У меня есть список с именем zip-файлов. Я хочу написать цикл for, чтобы разархивировать их в данный каталог.
Как установить переменную в bash, которая исходит из части имен zip?
for i in `cat zipfiles.txt`; do
WIDTH3="${cat zipfiles.txt | rev | cut -c47-54 | rev}"
Вы перебираете строки из 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
Вы перебираете строки из 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