Нет такого файла или каталога (ls) в сочетании с расширением тильды
Я пишу простой сценарий bash и хотел отобразить все элементы в определенном каталоге. Я пытался сделать следующее:
desktop="~/Desktop/testr/"
echo $desktop
echo `ls $desktop`
Однако я продолжаю получать вывод:
~/Desktop/testr/
ls: ~/Desktop/testr/: No such file or directory
Но когда я запускаю ls из терминала, я вижу элементы. Я подозреваю, что проблема в том, что ~
не расширяется, но я думал, что двойные кавычки позаботятся об этом.
Спасибо за вашу помощь!
1 ответ
Решение
Это связано с тем, что внутри строк в кавычках нет расширения тильды, а расширение тильды предшествует замене параметра в строке эха.
Последовательность расширений:
- Расширение тильды
- расширение параметра
- подстановка команд
- арифметическое расширение
- Расщепление поля
- Расширение пути
- Удаление цитаты
Посмотрите Спецификацию Оболочки POSIX на Расширения Word для подробностей.