Intereting Posts
Могу ли я узнать, является ли данный блок ext4 в таблице inode, и если да, могу ли я выбрать его из журнала без заголовка вручную? Ssh логин / shell не полностью работает (как раньше) Как изменить адрес электронной почты Postfix отправляет как Могу ли я перенести существующую систему openSUSE на использование шифрования диска? kali linux – WiFi подключен, но не может просматривать сеть блоки start-stop-daemon для процесса с бесконечным циклом Отключите некоторые нажатия клавиш операционной системы и действия мыши на Cinnamon заставить scp вести себя так, как предполагается (удаленная программа копирования файлов) Безопасный WiFi не аутентифицируется Как создать хэши паролей SHA512 в командной строке BunsenLabs (Deerrivative) не отключится (не удалось запустить poweroff.target: транзакция разрушительна) Настройка nginx для работы с файлами из подкаталогов Удалить файловую систему с нераспределенного диска Можно ли установить весь жесткий диск (раздел) как цель iscsi? настройка устройств ввода Xorg без udev

Как я могу использовать цикл для создания нового ФАЙЛА в каждом / home каталоге, кроме / home / lost + found

#!/bin/sh for file in /home/* do if [ "{$file}" != "/home/lost+found" ] then touch $file/FILE1 done 

Чего я хочу добиться, так это того, чтобы я прошел через все каталоги / home / и сделал в каждом ona файл, кроме / home / lost + found . Что я делаю неправильно?

Не так много, вам не хватает fi который завершает оператор if, и {$file} расширяется до {/home/somedir} с буквальными скобками. Расширение параметра с фигурными скобками равно ${file} , т.е. знак доллара выходит за скобки.

Кроме того, шаблон /home/* будет соответствовать всем файлам (не только каталогам), так что вы получите ошибки от touch если они есть. В /home может быть /home , но шаблон легко изменить на /home/*/ который должен соответствовать только каталогам. наклонная черта будет частью переменной, так что учитывайте это при сравнении. (Также можно проверить [ -d "$file" ] .)

Также, в общем, вы хотите процитировать "$file" . Или, возможно, dir будет более уместным здесь.

 #!/bin/sh for dir in /home/*/ ; do if [ "$dir" != "/home/lost+found/" ] ; then touch "$dir/FILE1" fi done