É minha strong suspeita de que você não deveria estar executando um script para atualizar seu script. Em vez disso, você deve apenas chamar awk de seu script original e obter os dados necessários dessa maneira. Então saker.txt poderia simplesmente ser usado como um arquivo de configuração (o que é) para mudar o comportamento do seu script (ao invés de usá-lo para mudar a saída do script de criação de script).
Eu tenho dados muito limitados em seu script, obviamente, mas o que parece é que você está usando saker.txt como uma tabela de pesquisa para definir uma variável em seu script.
Especificamente, o snippet de script:
if [ "$STATUS" == "1923.12.312." ]
then
vem="Nikl"
fi
if [ "$STATUS" == "12391.123.123" ]
then
vem="Jo"
fi
if [ "$STATUS" == "12398123.123912" ]
then
vem="Ad"
fi
pode ser funcionalmente reproduzido com um script awk embutido como segue:
vem=$( awk -v status="$STATUS" '$1 == status { printf "%s", $2 ; exit }' saker.txt )
Isso responde "Como posso definir uma variável em bash com base em procurar o valor de outra variável em um arquivo?" que é o que parece que você está tentando realizar executando seu script para atualizar seu script.
Há advertências, é claro, como "E se o valor de $STATUS não estiver listado em saker.txt ?" "E se for listado duas vezes?" "Como posso definir um valor padrão para vem ?" Mas você ainda tem todas essas advertências, e mais, com um script de atualização de script.
EDIT: Se você quiser permitir espaços no valor de vem como determinado no arquivo saker.txt , é melhor usar outra coisa para um delimitador, como uma guia:
$ cat saker.txt
1923.12.312. Nikl
12391.123.123 Jo
12398123.123912 Ad
Em seguida, use a seguinte versão do awk one-liner:
vem=$( awk -Ft -v status="$STATUS" '$1 == status { printf "%s", $2 ; exit }' saker.txt )
Uma advertência sobre os delimitadores de tabulação: certifique-se de não usar a guia mais de um . Diferentemente do tratamento "delimitado por espaço em branco" de awk , quando você define explicitamente o delimitador como uma TAB apenas, a guia each é contada como um delimitador, independentemente de haver texto entre as guias. Portanto, 10000<tab><tab>John será considerado como TRÊS campos: "10000", "" (campo vazio) e "John".