呼应波浪线的文件,而无需在击扩大它(Echoing a tilde to a file withou

2019-06-27 17:12发布

我需要的参数写在bash脚本文件,所以我做这样的事情,

echo "Argument is: $1" >> file

问题是,如果有在参数波浪号(〜)我不希望它扩展到主目录。 因此,如果用户通过〜/ bin中作为参数传递给脚本,它将获得写成〜/档,而不是/家庭/用户/箱。 我该怎么做呢?

Answer 1:

我假设你的启动程序为:

$ your_prog ~/foo

你的程序甚至开始之前的说法是翻译,所以没有什么可以做,以防止它比其他教育用户如果扩张不希望适当地引用:

$ your_prog "~/foo"


Answer 2:

您可以使用read命令来接受用户输入。

read var
echo "$var"


Answer 3:

查尔斯·达菲具有正确的答案。 你的程序正好表现如预期。 试试这些:

$ echo The HOME directory is ~
$ echo "The HOME directory is ~"

你会看到,仅仅投入引号中的波浪是防止膨胀。

究其原因,尽管你的报价,那你没有看到波浪线的是,外壳扩展波浪你的程序,甚至得到它作为一个参数之前。

UNIX中的shell是在自己的权利非常强大的生物。 它处理变量和特殊字符的扩张像~* ,所以你的程序没有来。

作为一个老教授曾经告诉我,“这是除了当它不是非常好”。 在这种特殊情况下“不是”。 Unix的外壳从而看不到你想要的东西。

解决这个问题的唯一办法就是摆脱壳。 您可以通过做read声明。



文章来源: Echoing a tilde to a file without expanding it in Bash