
下面是引發錯誤的程式碼部分。
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
您的腳本到底來自哪裡。總的來說,您的問題為我們提供了一些代碼,但沒有提供任何線索來完全回答您的問題