慕的地6264312
2019-07-06 16:34:38
如何在bash中手動(dòng)展開特殊變量(ex:~tilde)我的bash腳本中有一個(gè)變量,其值如下所示:~/a/b/c注意,它是未展開的傾斜體。當(dāng)我對這個(gè)變量(稱為$VAR)做ls-lt時(shí),我就沒有這樣的目錄。我想讓bash解釋/展開這個(gè)變量而不執(zhí)行它。換句話說,我希望bash運(yùn)行val,但不運(yùn)行計(jì)算過的命令。這在巴什有可能嗎?我是如何在沒有擴(kuò)展的情況下將它傳遞到我的腳本中的?我用雙引號(hào)圍繞它傳遞了論點(diǎn)。嘗試使用這個(gè)命令來理解我的意思:ls -lt "~"這正是我所處的情況。我要擴(kuò)大傾斜度。換句話說,我應(yīng)該用什么代替魔術(shù)使這兩個(gè)命令完全相同:ls -lt ~/abc/def/ghi和ls -lt $(magic "~/abc/def/ghi")請注意,~/abc/def/ghi可能存在也可能不存在。
3 回答

桃花長相依
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
由于StackOverflow的本質(zhì),我不能僅僅讓這個(gè)答案不被接受,但是在我發(fā)布這篇文章之后的5年里,有比我公認(rèn)的最基本和非常糟糕的答案好得多的答案(我當(dāng)時(shí)還年輕,不要?dú)⒘宋?。
原來的答案是出于歷史目的(但請不要使用這個(gè))
"~"
"~"
eval
#!/bin/bashhomedir=~eval homedir=$homedir echo $homedir # prints home path
${HOME}

素胚勾勒不出你
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
var
eval
eval var=$var # Do not use this!
var="$(rm -rf $HOME/)"
var="${var/#\~/$HOME}"
添加回答
舉報(bào)
0/150
提交
取消