
A continuación se muestra la parte del código que arroja error.
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
Cuando ejecuto el script en modo de depuración, puedo ver que no se está considerando el valor de p.
+ awk '-F ' '{ array3[p]="456" };1' oct.csv
Estoy ejecutando el script como ./script.sh
y /bin/ksh
se utiliza el shell. Por favor ayuda.
Respuesta1
En primer lugar, esto está mal:
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
${array1[$i]}
no es un archivo, por lo que no puedes simplemente lanzarlo como primer argumento de línea de comando en awk
. Con las variables tendrías que usar una echo $VARIABLE
cadena o aquí <<<
como esta
awk -F" " '{ array3[p]="123" };1' <<< ${array1[$i]}
En segundo lugar, existe una cuestión de alcance. array3[p]="123"
solo existe dentro awk
del código, por lo que no puede asignar nada fuera de él. Sin embargo, lo que podrías hacer es simplemente hacerlo.
array3[$p]="123"
Tampoco está claro $i
de dónde viene exactamente su guión. En general, su pregunta nos proporciona un poco de código pero no proporciona ninguna pista para responder completamente a su pregunta.