$1
é o primeiro argumento do script, por exemplo, list.txt
LIST=$1
simplesmente copia esse nome de arquivo para a variável LIST
, então $LIST
agora contém lists.txt
também - ele não contém 12345
.
while read PDF
do
...
done < ${LIST}
inicia um loop cuja entrada padrão é redirecionada para o arquivo list.txt
e, a cada vez, através do loop, ele lê uma linha do arquivo na variável PDF
. Então $PDF
conterá '12345.
As variáveis em makeInputAX.sh
não estão relacionadas às variáveis em run.sh
. Portanto, cada um deles tem suas próprias variáveis denominadas PDF
e operam independentemente. A única exceção seria as variáveis de ambiente, que são declaradas usando o comando export
; variáveis de ambiente definidas em um script de chamada são copiadas para o ambiente dos scripts que chama (mas não o contrário).
Eu não vejo nada em seus scripts que poderia estar produzindo o "não foi possível abrir o arquivo somethingelse for read", ele deve ser proveniente do programa C ++. É possível que esteja em uma biblioteca que seu programa chama, para que você não veja a mensagem em nenhum lugar do seu código.
Seu script makeInputAX.sh
não parece correto, no entanto. Provavelmente deveria ser algo assim:
PDF=1
echo "THEFILE ABC/${PDF}.something"
Você coloca $
antes de uma variável ao inserir seu valor em outro comando, você não a utiliza na atribuição. Você recuou, com o $
na atribuição, mas não no comando echo
.