Как записать arg в файл?
Я пытаюсь записать некоторый контент в файл и в то же время изменить некоторые значения, которые будут передаваться через аргументы.
Я последовал этому ответу Создание файла с некоторым содержанием в сценариях оболочки
cat > filename <<- "EOF"
File contents
More contents
EOF
Итак, скажем, когда я запускаю скрипт так:
./script Abraham
и я хочу написать внутри файла что-то вроде:
Hello Abraham
More contents, etc...
Я пришел из фона Javascript, поэтому я пытался что-то вроде:
`Hello ${1}, etc...`
но то, что я получал внутри файла, было:
Hello $1
More contents, etc...
потому что не позволяет мне установить переменную аргумента. Так как я могу это сделать? Заранее спасибо.
1 ответ
Цитаты вокруг начального "EOF"
предотвратить расширение переменной. Чтобы использовать переменные в тексте heredoc, вам нужен разделитель без кавычек:
cat > filename <<- EOF
Hello $1
More contents, etc...
EOF
Но тогда вам придется быть осторожным с синтаксисом оболочки в остальной части содержимого.
Другой вариант - написать эту строку отдельно и записать фиксированное содержимое, используя heredoc:
echo "Hello $1" > filename
cat >> filename <<- "EOF"
More contents, etc...
EOF
Обратите внимание на использование >>
для добавления после первоначальной записи.