LINUX.ORG.RU
решено ФорумAdmin

Проверка имени файла на четный и не четный

 ,


0

1

Здравствуйте, я новичок прохожу обучение к вопросу прошу отнестить с пониманием, и сильно не смеяться) Вообщем стоит задача создать 100 файлов .txt (1,2,3..100) и в каждый четный файл записать предположим слово Hello. Подскажите что делаю не так ?

 for u in {1..100}.txt;
                do
                if      [[$(($u % 2)) -eq 0 ]];
                then
                echo "Hello" > $u;
                fi

done


Последнее исправление: xaizek (всего исправлений: 1)

Попробуй начать с малого и посмотреть, что попадает в переменную $u. Спойлер: туда попадает имя файла целиком, вместе с .txt.

for u in {1..100}.txt; do echo $u; done

Чтобы извлечь число можешь воспользоваться магией обработки строк вида ${u%.txt}.

Более простой способ: добавлять суффикс .txt уже в цикле

for u in {1..100}; do echo $u $u.txt; done

И вторая проблема, твоё условие отработает только для чётных файлов, а для нечётных ты файл так и не создашь, нужно добавить какой-то else, или перед условием этот файл создавать.

grazor ★★
()
Последнее исправление: grazor (всего исправлений: 2)
int@blackhorse bash 0 0.26 $ ./foo.bash 
int@blackhorse bash 0 0.26 $ cat 2.txt 
Hello
int@blackhorse bash 0 0.24 $ cat 3.txt 
int@blackhorse bash 0 0.24 $ cat 4.txt 
Hello
int@blackhorse bash 0 0.22 $
int@blackhorse bash 0 0.22 $ cat foo.bash 
#!/usr/bin/env bash

for u in {1..100}.txt; do
	(( ${u%%.*} % 2 == 0 )) && echo "Hello" > "$u"
done
int@blackhorse bash 0 0.14 $

$ shellcheck foo.bash
No issues detected!

ubik
()
Последнее исправление: ubik (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.