将波浪号回送到文件而不在Bash中展开它

gsi*_*011 7 bash escaping tilde

我需要在Bash脚本中为一个文件写一个参数,所以我做的是这样的,

echo "Argument is: $1" >> file
Run Code Online (Sandbox Code Playgroud)

问题是,如果参数中有波浪号(〜),我不希望它扩展到主目录.因此,如果用户将〜/ bin作为参数传递给脚本,它将被写为〜/ bin而不是/ home/user/bin.我该怎么做呢?

Cha*_*ffy 6

我假设您的程序启动为:

$ your_prog ~/foo
Run Code Online (Sandbox Code Playgroud)

在您的程序开始之前,该参数已被翻译,因此除了教育用户在不需要扩展时如何正确引用之外,您无法阻止它:

$ your_prog "~/foo"
Run Code Online (Sandbox Code Playgroud)


kev*_*kev 4

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

read var
echo "$var"
Run Code Online (Sandbox Code Playgroud)