Esta é uma versão simplificada de um script em que estou trabalhando. Eu estou lendo números, que contêm quebras de linha, de um arquivo. Eu preciso concatenar cada número com outras strings, e eu preciso passar essa string concatenada para um comando find
para usá-lo como uma expressão regular (espero que esse fato não torne isso um problema XY. Eu já tentei minha saída esperada com find
para garantir que funcionará bem o suficiente para meus propósitos).
De qualquer forma, estou usando esta versão do script para descobrir como produzir essa string, no entanto, estou tendo problemas com a concatenação. Eu suspeito que Bash pode estar interpretando os caracteres especiais de uma forma que eu não pretendo, mas estou em uma perda quanto a como para evitar esse comportamento.
#!/bin/bash
some_number=6109 # read from file in real script, and would include newline
a='[^0-9]*'
b="${some_number%$'\n'}" # strip newline
c='_{1}.*.jpg'
regexp="$a$b$c"
echo "a: $a"
echo "b: $b"
echo "c: $c"
echo "regexp: $regexp"
echo "$regexp"
# Eventually, I need to pass the string to a find command:
find /path/to/dir/ -regextype posix-extended -regex $regexp > /file/to/overwrite.txt
a: [^0-9]*
b: 6109
c: _{1}.*.jpg
regexp: [^0-9]*6109_{1}.*.jpg
[^0-9]*6109_{1}.*.jpg
a: [^0-9]*
b: 6450
c: _{1}.*.jpg
_{1}.*.jpg0-9]*6109
_{1}.*.jpg9
Estou particularmente intrigado com o fato de o Bash parecer produzir $ c, depois parte de $ a e, em seguida, parte de $ b na quarta declaração echo (e eu nem sei o que pensar sobre o quinto) . Depois de ler todas as perguntas / respostas abaixo, ainda não consigo chegar tanto quanto uma hipótese que possa explicar a saída real. Alguém se importaria de explicar o que está acontecendo aqui?
Brincando com o uso de aspas simples para as strings desta pergunta: link
Tentando citar as referências de variáveis para essa pergunta: link
Analise todas as respostas a estas perguntas: link < href="https://stackoverflow.com/questions/2459286/unable-to-set-variables-in-bash-script"> link link
Tags bash shell-script