如何手动扩展bash中的特殊变量(例如:?tilde)
发布时间:2020-12-15 16:47:13 所属栏目:安全 来源:网络整理
导读:我有一个变量在我的bash脚本的值是这样的: ~/a/b/c 注意,它是未展开的波浪号。当我对这个变量(称为$ VAR)ls -lt,我没有这样的目录。我想让bash解释/展开这个变量而不执行它。换句话说,我想要bash运行eval但不运行已评估的命令。这是可能在bash吗? 我如
我有一个变量在我的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 原始答案的历史目的(但请不要使用这个) 如果我没有错误,“?”将不会被bash脚本以这种方式展开,因为它被当作一个字符串“?”。你可以通过eval强制扩展。 #!/bin/bash homedir=~ eval homedir=$homedir echo $homedir # prints home path 或者,如果您想要用户的主目录,只需使用$ {HOME}。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |