Помимо того, что
для файла в $forall
выполнит цикл только один раз, с $ файл
установить на каталог /home/anastasia/Скрипты
, основная проблема в том, что
владелец='ls -l $файл | grep "^-" | awk {'напечатать $£3'}'
присваивает литеральную строку ls -l $ файл | grep "^-" | авк {печать
к переменной владелец
(а затем пытается выполнить $3}
как команда).
Предположительно, вы предполагали, что внешние кавычки будут подстановкой команд обратные кавычки (и 3 фунта стерлингов
быть простым 3
):
владелец=`ls -l $файл | grep "^-" | awk {'напечатать $3'}`
однако современный способ будет использовать $(...)
вместо:
владелец=$(ls -l $file | grep "^-" | awk {'print $3'})
Однако это ужасный способ найти владельца файла; вместо этого я бы рекомендовал
владелец=$(stat -c %U -- "$file")
Кроме того, не забудьте указать свои расширения переменных, например (непроверено):
#!/бин/баш
forall=/home/anastasia/Скрипты
для файла в "$forall"/*
делать
если [-d "$файл"]; тогда
Продолжить
фи
если [-е "$файл"]; тогда
владелец=$(stat -c %U -- "$file")
cp -n "$file" "$forall/$owner"/
chown "$owner" "$forall/$owner/$file"
фи
сделано
Обратите внимание, что вы должны быть в состоянии устранить чаун
путем добавления соответствующих опций для ср
(возможно -п
чтобы сохранить режим, право собственности, временные метки).