Я'вэ написал этот скрипт:
#!/bin/bash
file="~/Desktop/test.txt"
echo "TESTING" > $file
Скрипт не'т работать; это дает мне эту ошибку:
./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory
Что я делаю не так?
Попробуйте заменить ~
с $дома
. Тильда расширение происходит только тогда, когда Тильда является неупомянутой. Посмотреть информацию на "(Баш) расширение и quot Тильда;`.
Вы также можете сделать файл =~/рабочий стол
без кавычек, но если вы когда-либо заменить часть, что-то с разделителем поля в нем, то он сломается. Цитирую значения переменных-это, вероятно, хорошая вещь, чтобы сделать в любом случае в привычку. Цитирую переменной `файл=~/то"настольных" будет также работать, но я думаю, что это довольно некрасиво.
Еще одна причина предпочесть $Home
и, когда это возможно: расширение Тильда бывает только в начале слова. Параметр командной так - =~в/foo
будет работать только если "команда" не Тильда самого расширения, который зависит от команды, в то время как `--параметр=на" команду; домашняя$/фу" и будет всегда работать.
К вашему сведению, вы также можете использовать функции "eval":
eval "echo "TESTING" > $file"
В функции "eval" принимает команду в качестве аргумента и вызывает оболочку делать в <а href="и http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion">расширение&ЛТ Тильда;/а>.