我在我的bash脚本中有一个变量,其值类似于:
~/a/b/c
请注意,这是未展开的波浪号。当我在这个变量上运行ls -lt(假设它叫做$VAR)时,找不到该目录。我希望让bash解释/展开这个变量而不执行它。换句话说,我想让bash运行eval但不运行评估的命令。在bash中是否可以实现这一点?我是如何在没有展开的情况下将其传递到我的脚本中的?我用双引号将参数括起来传递。
尝试运行以下命令以了解我的意思:
ls -lt "~"
我正处于这种情况下。我希望波浪号得到扩展。换句话说,我应该用什么替换magic,使得这两个命令相同:
ls -lt ~/abc/def/ghi
并且
ls -lt $(magic "~/abc/def/ghi")
请注意,~/abc/def/ghi 可能存在,也可能不存在。
eval
,但并非完全如此。 - Jonathan Lefflerfoo=~/"$filepath"
或foo="$HOME/$filepath"
。 - Chad Skeetersdir="$(readlink -f "$dir")"
- Jack Wasey