У меня есть переменная в моем сценарии bash, значение которой примерно такое:
~/a/b/c
Обратите внимание, что это нерасширенная тильда. Когда я выполняю ls -lt для этой переменной (назовем ее $ VAR), я не получаю такой каталог. Я хочу, чтобы bash интерпретировал / расширял эту переменную, не выполняя ее. Другими словами, я хочу, чтобы bash запускал eval, но не запускал оцениваемую команду. Возможно ли это в баше?
Как мне удалось передать это в мой скрипт без расширения? Я передал аргумент, заключив его в двойные кавычки.
Попробуйте эту команду, чтобы понять, что я имею в виду:
ls -lt "~"
Это как раз та ситуация, в которой я нахожусь. Я хочу, чтобы тильда была расширена. Другими словами, на что мне заменить magic, чтобы эти две команды стали идентичными:
ls -lt ~/abc/def/ghi
и
ls -lt $(magic "~/abc/def/ghi")
Обратите внимание, что ~ / abc / def / ghi может существовать, а может и не существовать.
foo=~/"$filepath"
илиfoo="$HOME/$filepath"
dir="$(readlink -f "$dir")"
eval
.