bugfix> bash > 投稿
number=3
var="mango pineapple watermelon"
var1=("echo $var | awk '{print $number}'")
echo $var1

上記のbashスクリプトは、3の数値を取りません。上記のコードのprintステートメントの後に変数値を使用する必要があります。 forループのカウンター値として変数番号を取得していますが、これを実現するにはどうすればよいですか?

回答 2 件
  • あなたが持っていると仮定します:

    $ n=3
    
    

    そのシェル変数をawkに渡す一般的な方法は次のとおりです。

    $ awk -v n="$n" 'BEGIN {print n}'
    3
    
    

    その出力を新しい変数にキャプチャする場合:

    $ n2=$(awk -v n="$n" 'BEGIN {print n}')
    $ echo "$n2"
    3
    
    

    パイプライン入力をawkにロールインすると、何が期待されているかが不明確になります...


    n を選択しようとしている場合 行入力のワード:

    $ var="mango pineapple watermelon"
    $ echo "$var" | awk -v n="$n" '{print $n}'
    watermelon
    
    

    そして、あなたがそれを var2 に入れようとしているなら :

    $ var2=$(echo "$var" | awk -v n="$n" '{print $n}')
    $ echo "$var2"
    watermelon
    
    

  • 役に立たないようですが、これは動作するはずです...

    $ number=3
    $ var="mango pineapple watermelon"
    $ var1=$(echo "$var" | awk -v field="$number" '{print $field}')
    $ echo "$var1"
    
    

    var1値として「スイカ」を取得する必要があります。

あなたの答え