我需要的参数写在bash脚本文件,所以我做这样的事情,
echo "Argument is: $1" >> file
问题是,如果有在参数波浪号(〜)我不希望它扩展到主目录。 因此,如果用户通过〜/ bin中作为参数传递给脚本,它将获得写成〜/档,而不是/家庭/用户/箱。 我该怎么做呢?
我需要的参数写在bash脚本文件,所以我做这样的事情,
echo "Argument is: $1" >> file
问题是,如果有在参数波浪号(〜)我不希望它扩展到主目录。 因此,如果用户通过〜/ bin中作为参数传递给脚本,它将获得写成〜/档,而不是/家庭/用户/箱。 我该怎么做呢?
我假设你的启动程序为:
$ your_prog ~/foo
你的程序甚至开始之前的说法是翻译,所以没有什么可以做,以防止它比其他教育用户如果扩张不希望适当地引用:
$ your_prog "~/foo"
您可以使用read
命令来接受用户输入。
read var
echo "$var"
查尔斯·达菲具有正确的答案。 你的程序正好表现如预期。 试试这些:
$ echo The HOME directory is ~
$ echo "The HOME directory is ~"
你会看到,仅仅投入引号中的波浪是防止膨胀。
究其原因,尽管你的报价,那你没有看到波浪线的是,外壳扩展波浪你的程序,甚至得到它作为一个参数之前。
UNIX中的shell是在自己的权利非常强大的生物。 它处理变量和特殊字符的扩张像~
和*
,所以你的程序没有来。
作为一个老教授曾经告诉我,“这是除了当它不是非常好”。 在这种特殊情况下“不是”。 Unix的外壳从而看不到你想要的东西。
解决这个问题的唯一办法就是摆脱壳。 您可以通过做read
声明。