
Abaixo está a parte do código que está gerando erro.
for (( p=0; p<${var2}; p++ ))
do
if [[ ${array2[$p]} == *"xyz"* ]]
then
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
else
awk -F" " '{ array3[p]="456" };1' ${array1[$i]}
fi
Ao executar o script no modo de depuração, percebi que o valor de p não está sendo considerado.
+ awk '-F ' '{ array3[p]="456" };1' oct.csv
Estou executando o script como ./script.sh
e /bin/ksh
o shell é usado. Por favor ajude.
Responder1
Em primeiro lugar, isto está errado:
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
${array1[$i]}
não é um arquivo, então você não pode simplesmente lançá-lo como primeiro argumento de linha de comando para awk
. Com variáveis você teria que usar echo $VARIABLE
ou aqui uma string <<<
assim
awk -F" " '{ array3[p]="123" };1' <<< ${array1[$i]}
Em segundo lugar, há uma questão de âmbito. array3[p]="123"
só existe dentro awk
do código, então você não pode atribuir nada fora dele. O que você poderia fazer, no entanto, simplesmente faça
array3[$p]="123"
Também não está claro de onde $i
vem exatamente em seu script. No geral, sua pergunta nos fornece um pouco de código, mas não fornece nenhuma pista para respondê-la completamente