отображение вывода в одной строке

Очень старая поведение. Но есть логика позади.

Bash Читает строку скрипта по линии. Первый awk Заявление просто пишет Skrypt.sh файл новый, с тем же содержимым, потому что нечего заменить.

Второй awk awk awk с #awk (одиночная замена). Итак, это добавляет один символ. Затем Bash читает остальную часть файла. Смещение расположено в конце строки (со вторым awk , строка 4). Но эта линия теперь немного дольше (один символ). Таким образом, Bash читает остальную часть линии, которая является одним H . Это резьбу как команда (потому что мы находимся в скрипте , и он заканчивается новой строкой). И H , конечно, не является действительной командой, поэтому сообщение об ошибке.

Для достижения того, что вы хотите (кроме того, что ваш скрипт очень нестабилен) добавьте символ больше в конце строки 4, который нельзя интерпретировать как команду, пространство (), например.

Последнее, но не в последнюю очередь:

Вы не должны редактировать скрипты внутри себя.

0
06.05.2015, 02:23
2 ответа

Вместо этого можно использовать printf:

printf 'total directories: %s\n' "$(find "$DIR" -type d | wc -l)"
printf 'total files: %s\n' "$(find "$DIR" -type f | wc -l)"

Обратите внимание, что это приведет к неправильному результату, если какие-либо каталоги или файлы будут содержать новую строку в своем имени.

1
28.01.2020, 02:50

Используйте что-то вроде этого:

echo "total directories: $(find "$DIR" -type d | wc -l)"
echo "total files: $(find "$DIR" -type f | wc -l)"
0
28.01.2020, 02:50

Теги

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