Мне нужно написать аргумент в файл в сценарии Bash, поэтому я делаю что-то вроде этого,
echo "Argument is: $1" >> file
Проблема в том, что если в аргументе есть тильда (~), я не хочу, чтобы он расширялся до домашнего каталога. Таким образом, если пользователь передал ~/bin в качестве аргумента скрипту, он будет записан как ~/bin, а не как /home/user/bin. Как мне это сделать?
""
) или экранировать\~
. - person Prince John Wesley   schedule 03.09.2012your-script ~/foo
, то~
расширяется оболочкой пользователя.your-script
просто не может узнать, что пользователь набрал тильду; все, что он видит в качестве аргумента, это"/home/theuser/foo"
. Любой пользователь bash должен знать об этом поведении. Поскольку~
означает домашний каталог пользователя, почему бы вам не расширить его? - person Keith Thompson   schedule 03.09.2012