Ошибка при выводе в переменную имени файла в скрипте оболочки - PullRequest
4 голосов
/ 27 января 2011

Я написал очень простую программу для проверки вывода данных в переменную имени файла.

#!/bin/sh
file="~/output"
echo "test" > $file

При запуске этого скрипта я получил следующую ошибку

"./ script.sh: строка 3: ~ / output: нет такого файла или каталога "

Итак, как мне пересмотреть мой код, чтобы он работал?Или это не поддерживается в сценарии оболочки?

Ответы [ 2 ]

5 голосов
/ 27 января 2011

Кавычки вокруг "~ / output" вызывают у вас горе.

* 1003 например *

#!/bin/sh
file=~/output
echo "test" > $file

работает нормально.

Чтобы увидеть, что происходит, попробуйте

$ file="~/output"
$ echo $file

против

$ file=~/output
$ echo $file

и имейте в виду, что ~ это расширение оболочки для домашнего каталога.

1 голос
/ 27 января 2011

Вместо этого вы можете использовать переменную окружения $ HOME в скрипте:

#!/bin/sh
file="$HOME/output"
echo "test" > $file
...