
Ниже приведена часть кода, вызывающая ошибку.
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
Когда я запустил скрипт в режиме отладки, я увидел, что значение p не учитывается.
+ awk '-F ' '{ array3[p]="456" };1' oct.csv
Я запускаю скрипт как ./script.sh
и /bin/ksh
используется ли оболочка. Пожалуйста, помогите.
решение1
Во-первых, это неверно:
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
${array1[$i]}
не является файлом, поэтому вы не можете просто передать его в качестве первого аргумента командной строки в awk
. С переменными вам придется использовать либо echo $VARIABLE
или здесь строку, <<<
например
awk -F" " '{ array3[p]="123" };1' <<< ${array1[$i]}
Во-вторых, из всех, есть проблема области действия. array3[p]="123"
существует только внутри awk
кода, поэтому вы не можете назначить что-либо за его пределами. Однако, что вы могли бы сделать, просто сделайте
array3[$p]="123"
Также неясно, откуда именно $i
берется в вашем скрипте. В целом, ваш вопрос дает нам немного кода, но не дает никаких подсказок для полного ответа на ваш вопрос