Eu sou muito novo com comandos shell do Linux. Eu preciso ler um arquivo de texto que contém várias linhas como '! Platform_series_id = GSE1145'. Eu deveria dividir cada linha para usar ' GSE1145 ' depois da parte do sinal '='. Por fim, quero produzir um link como " ftp://ftp.ncbi.nlm.nih.gov / geo / series / GSE5nnn / GSE1145 / supl / GSE1145 _RAW.tar '
As partes em negrito do link serão tiradas do arquivo txt. As partes restantes são constantes. Essa foi a história.
Se eu chegar ao ponto em que fiquei preso:
Quando eu corro o seguinte código
while read p; do
A="$(cut -d'=' -f2 <<<$p)"
echo "ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE5nnn/$A/suppl/$A_RAW.tar"
done < a.txt
Dá um resultado inesperado
/suppl/.tarcbi.nlm.nih.gov/geo/series/GSE5nnn/ GSE1145
/suppl/.tarcbi.nlm.nih.gov/geo/series/GSE5nnn/ GSE1643
Então eu tentei simplesmente concatenar a mesma variável
while read p; do
A="$(cut -d'=' -f2 <<<$p)"
echo "$A$A"
done < a.txt
Mas ainda assim a resposta não é o que eu espero. Apenas se comporta como está escrito eco $ A.
GSE1145
GSE1643
Para entender o problema, finalmente tentei o seguinte código:
A="$(cut -d'=' -f2 <<< '!Platform_series_id = GSE1145')"
echo $A$A
Isso me dá um resultado correto
GSE1145 GSE1145
Então, qual é o problema quando o leio?
A propósito, quando tento seguir o código, funciona! Mas por que? Eu acho que isso não é o caminho correto. Se eu colocar espaços como o comprimento do $ A,
while read p; do
A="$(cut -d'=' -f2 <<<$p)"
echo " $A$A"
done < a.txt
GSE1145 GSE1145
GSE1643 GSE1643
Obrigado por ajuda.