Ich habe eine Variable in meinem Bash-Skript, deren Wert ungefähr so lautet:
~/a/b/c
Beachten Sie, dass es sich um eine nicht erweiterte Tilde handelt. Wenn ich ls -lt für diese Variable mache (nenne es $ VAR), bekomme ich kein solches Verzeichnis. Ich möchte bash diese Variable interpretieren / erweitern lassen, ohne sie auszuführen. Mit anderen Worten, ich möchte, dass bash eval ausführt, aber den ausgewerteten Befehl nicht ausführt. Ist das in Bash möglich?
Wie habe ich es geschafft, dies ohne Erweiterung in mein Skript zu übertragen? Ich habe das Argument bestanden, indem ich es mit doppelten Anführungszeichen umgeben habe.
Versuchen Sie diesen Befehl, um zu sehen, was ich meine:
ls -lt "~"
Dies ist genau die Situation, in der ich mich befinde. Ich möchte, dass die Tilde erweitert wird. Mit anderen Worten, durch was soll ich Magie ersetzen, um diese beiden Befehle identisch zu machen:
ls -lt ~/abc/def/ghi
und
ls -lt $(magic "~/abc/def/ghi")
Beachten Sie, dass ~ / abc / def / ghi möglicherweise existiert oder nicht.
foo=~/"$filepath"
oderfoo="$HOME/$filepath"
dir="$(readlink -f "$dir")"
eval
.