Saya memiliki variabel dalam skrip bash saya yang nilainya seperti ini:
~/a/b/c
Perhatikan bahwa ini adalah tilde yang tidak dikembangkan. Ketika saya melakukan ls -lt pada variabel ini (sebut saja $ VAR), saya tidak mendapatkan direktori seperti itu. Saya ingin membiarkan bash menafsirkan / memperluas variabel ini tanpa menjalankannya. Dengan kata lain, saya ingin bash menjalankan eval tetapi tidak menjalankan perintah yang dievaluasi. Apakah ini mungkin di bash?
Bagaimana saya bisa meneruskan ini ke skrip saya tanpa ekspansi? Saya melewati argumen di sekitarnya dengan tanda kutip ganda.
Coba perintah ini untuk melihat apa yang saya maksud:
ls -lt "~"
Ini persis situasi saya. Saya ingin tilde diperluas. Dengan kata lain, apa yang harus saya ganti dengan sihir untuk membuat kedua perintah ini identik:
ls -lt ~/abc/def/ghi
dan
ls -lt $(magic "~/abc/def/ghi")
Perhatikan bahwa ~ / abc / def / ghi mungkin ada atau tidak ada.
foo=~/"$filepath"
ataufoo="$HOME/$filepath"
dir="$(readlink -f "$dir")"
eval
.