Tôi có một biến trong tập lệnh bash có giá trị như sau:
~/a/b/c
Lưu ý rằng đó là dấu ngã chưa được mở rộng. Khi tôi thực hiện ls -lt trên biến này (gọi nó là $ VAR), tôi không nhận được thư mục nào như vậy. Tôi muốn để bash diễn giải / mở rộng biến này mà không thực hiện nó. Nói cách khác, tôi muốn bash chạy eval nhưng không chạy lệnh được đánh giá. Điều này có thể trong bash?
Làm thế nào tôi quản lý để chuyển điều này vào kịch bản của mình mà không cần mở rộng? Tôi đã thông qua các đối số xung quanh nó với dấu ngoặc kép.
Hãy thử lệnh này để xem ý tôi là gì:
ls -lt "~"
Đây chính xác là tình huống tôi đang gặp phải. Tôi muốn dấu ngã được mở rộng. Nói cách khác, tôi nên thay thế phép thuật bằng cách làm cho hai lệnh này giống hệt nhau:
ls -lt ~/abc/def/ghi
và
ls -lt $(magic "~/abc/def/ghi")
Lưu ý rằng ~ / abc / def / ghi có thể tồn tại hoặc không tồn tại.
foo=~/"$filepath"
hoặcfoo="$HOME/$filepath"
dir="$(readlink -f "$dir")"
eval
.