awk文の変数を使用して配列要素を取得する

awk文の変数を使用して配列要素を取得する

以下はエラーを引き起こすコードの一部です。

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

おすすめ記事