如何在bash中手动展开特殊变量(ex:~tilde)我的bash脚本中有一个变量,其值如下所示:~/a/b/c注意,它是未展开的倾斜体。当我对这个变量(称为$VAR)做ls-lt时,我就没有这样的目录。我想让bash解释/展开这个变量而不执行它。换句话说,我希望bash运行val,但不运行计算过的命令。这在巴什有可能吗?我是如何在没有扩展的情况下将它传递到我的脚本中的?我用双引号围绕它传递了论点。尝试使用这个命令来理解我的意思:ls -lt "~"这正是我所处的情况。我要扩大倾斜度。换句话说,我应该用什么代替魔术使这两个命令完全相同:ls -lt ~/abc/def/ghi和ls -lt $(magic "~/abc/def/ghi")请注意,~/abc/def/ghi可能存在也可能不存在。
3 回答

桃花长相依
TA贡献1860条经验 获得超8个赞
由于StackOverflow的本质,我不能仅仅让这个答案不被接受,但是在我发布这篇文章之后的5年里,有比我公认的最基本和非常糟糕的答案好得多的答案(我当时还年轻,不要杀了我)。
原来的答案是出于历史目的(但请不要使用这个)
"~"
"~"
eval
#!/bin/bashhomedir=~eval homedir=$homedir echo $homedir # prints home path
${HOME}

素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
var
eval
eval var=$var # Do not use this!
var="$(rm -rf $HOME/)"
var="${var/#\~/$HOME}"
添加回答
举报
0/150
提交
取消