set IP_ADDR = "123.123.123.123"
está incorreto. Você precisa de:
IP_ADDR="123.123.123.123"
(sem espaços).
Estou tentando usar uma variável global definida pelo usuário em uma situação cat <<eof>> filename
, mas não está funcionando. Encontrei o que quero em exemplos simples de cat << eof
neste fórum, o que me levou até aqui: link . Mas eu gostaria de algo parecido com o seguinte, com o% adicionado>>
e filename
(Isso não não funciona.):
#!/bin/bash
#after testing I will define this in .bashrc or somewhere?
set IP_ADDR = "123.123.123.123"
#empty the file in case there is something in it
truncate -s 0 sample.conf
# open a file and append
cat <<EOF >> sample.conf
This is my sample config file
Server IP = $IP_ADDR
this is the last line of my sample config file
EOF
#print the file to verify
cat sample.conf
Isso produz uma string nula após Server IP =
sed
funcionaria se eu já tivesse o arquivo escrito, exceto pelo valor da variável que está faltando, mas eu não necessariamente terei o endereço IP (ou qualquer outro) prontamente disponível como uma string literal.
Além disso, talvez eu não tenha a cadeia literal disponível para uso como um parâmetro de linha de comando quando eu executar o script. $1
funciona dentro do bloco de código cat << eof >> filename
. Eu provei isso. Mas eu não terei acesso imediato ao valor quando eu começar este script ...
Tags cat shell here-document