下面是引发错误的代码部分。
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
使用的是 shell。请帮忙。
答案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
您的脚本到底来自哪里。总的来说,您的问题为我们提供了一些代码,但没有提供任何线索来完全回答您的问题