如何手动扩展bash中的特殊变量(例如:〜tilde)

前端之家收集整理的这篇文章主要介绍了如何手动扩展bash中的特殊变量(例如:〜tilde)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个变量在我的bash脚本的值是这样的:
~/a/b/c

注意,它是未展开的波浪号。当我对这个变量(称为$ VAR)ls -lt,我没有这样的目录。我想让bash解释/展开这个变量而不执行它。换句话说,我想要bash运行eval但不运行已评估的命令。这是可能在bash吗?

我如何设法将这个传递到我的脚本没有扩展?我通过双引号包围它的参数。

尝试这个命令看看我的意思:

ls -lt "~"

这正是我所处的情况。我想要扩大波浪号。换句话说,我应该用什么替换魔术,使这两个命令相同:

ls -lt ~/abc/def/ghi

ls -lt $(magic "~/abc/def/ghi")

注意〜/ abc / def / ghi可能存在也可能不存在。

由于StackOverflow的性质,我不能只是让这个答案不被接受,但在介入的5年,因为我发布了这里有比我承认的基本和很糟糕的答案更好的答案(我是年轻的,不要杀我)。

这个线程中的其他解决方案是更安全和更好的解决方案。优选地,我将与这两个:

> Charle’s Duffy’s solution
> Håkon Hægland’s solution

原始答案的历史目的(但请不要使用这个)

如果我没有错误,“〜”将不会被bash脚本以这种方式展开,因为它被当作一个字符串“〜”。你可以通过eval强制扩展。

#!/bin/bash

homedir=~
eval homedir=$homedir
echo $homedir # prints home path

或者,如果您想要用户的主目录,只需使用$ {HOME}。

猜你在找的Bash相关文章