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