Я хочу получить размер каталога, заданного пользователем в качестве аргумента. Пример:

read -p "Enter the directory" target

du -k $target

Если пользователь указывает путь как ~/Documents/dir , я получаю сообщение об ошибке: du: cannot access '~/Documents/dir': No such file or directory

Принимая во внимание, что если я дам команду как:

du -k ~/Documents/dir

Я получаю желаемый результат.

Почему я не могу использовать переменные вместе с командой du?

1 ответ1

0

Символ ~ не раскрывается после того, как он был прочитан поверх оболочки, или когда он помещен в команду du . Вы можете заставить bash выполнить расширение с помощью следующего кода:

read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"

${target/#\~/$HOME} является важной частью. Он заменяет ~ содержимым переменной среды HOME .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .