Eu uso muitos arquivos externos em meus scripts.
Mas eu tenho um problema, que se eu origem um arquivo com exit
no conteúdo do arquivo, o script sai do carregamento e as seqüências que eu quero usar se foram
.
Exemplo main.sh
:
#!/bin/bash
clear;
source /opt/external-svn/config.sh;
echo "$var1 and $var2 and $var3";
Exemplo config.sh
:
#!/bin/bash
var1="foo bar is great"
var2="foooo baar is greater"
var3="foooooooo baaaaaar is \
to long"
exit 0
O problema é a multilinha var3
,
então eu quero usar a fonte
para var1
e var2
. O seguinte é possível, mas não é bom:
var1=$(cat "/opt/external-svn/config.sh" |awk -F'"' '/^var1/ {print $2}');
Isso só funciona para uma única linha, não para var3
.
Existe uma solução simples / fácil?
atualizar porque sou idiota ao fazer uma resposta correta
@Gilles
não não está funcionando
arquivo em bruto está aqui para sugestões
raw.githubusercontent.com/gorgone/temptest/master/config.sh
#!/bin/bash
FILE="/tmp/$(basename $0).$$.tmp"
configsh="/opt/external-svn/config.sh"
grep -vE '^exit' $configsh > $TFILE
source "$TFILE"
saia do mainscript e obtenha eco para a tela
@Anthon também não funciona para o meu arquivo no github
Update2 encontrou a solução
eu encontrei a mágica ONE
Eu uso a idéia, mas não é uma solução genérica
apenas para o meu caso especial
cat config.sh |sed 's/if [ $# = 0 ]/if [ $# = 1 ]/g' >config.source
para poder criar o arquivo
mas a melhor maneira é ter uma solução genérica para todos os arquivos