
以下はエラーを引き起こすコードの一部です。
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
また、スクリプトのソースが正確にどこにあるのかわかりません。全体的に、あなたの質問はいくつかのコードを提供しますが、あなたの質問に完全に答えることができる手がかりは提供しません。