No que diz respeito ao seu script, você pode usar o redirecionamento >
no arquivo. Você está perguntando se o arquivo não existe (o que deve ser melhor expresso como if ! [ -e ~/.conf/file/path ];
), portanto, não há necessidade de usar o operador append
neste caso específico (mesmo que funcione bem).
Quanto à impressão de múltiplas configurações no arquivo, a Panther já sugeriu o uso de aqui em sua comentário em a resposta de Thomas . Esta é uma técnica frequente que eu pessoalmente uso para escrever "mensagem de ajuda" ou informações de opções em meus scripts
Você poderia facilmente fazer algo assim:
bash-4.3$ cat > out.txt <<EOF
> parameter1="value 1"
> parameter2="value 2"
> EOF
bash-4.3$ cat out.txt
parameter1="value 1"
parameter2="value 2"
bash-4.3$
Ou, como alternativa, crie uma função específica, write_config()
para tornar seu script mais idiomático, por assim dizer:
#!/usr/bin/env bash
# note usage of $HOME variable instead of ~
my_config="$HOME/my_conf_file.txt"
# declare all functions at the top
config_exists()[[ -e "$my_config" ]]
write_config(){
cat > "$my_config" <<EOF
parameter1="value 1"
parameter2="varlue 2"
EOF
}
if ! config_exists;
then
echo "config doesn't exist"
write_config
fi