次のコマンドを説明してください。

次のコマンドを説明してください。
getDateFormat() {
  year=`echo $1 | awk -F"-" '{print $2}'`
  mm=`echo $1 | awk -F"-" '{print $3}'`
  i=1
  for x in January February march april may july jun august September October November December
  do
    if [ $mm -eq $ii ]; then
      month="$x"
      break
    fi
    ii=`expr $ii + 1`
  done
  mday=`echo $1 | awk -F"_" '{print $1}' | awk -F"-" '{print $4}'`
  tmp_date="${mday}_${month}_$year
}

上記の機能が何であるかを知りたいです。

$ awk '$2 == "1" { print $0 }' cols.txt 

一致する部分がある場合は、行全体を印刷します。しかし、このコマンドは何を返しますか?

echo $1 | awk -F"-" '{print $2}'

$ii- これは何ですか?

i=1;
echo $ii 

何も印刷しません。

ベストアンサー1

$1最初です位置パラメータつまり、関数のパラメータです。 ■フィールド区切り記号をダッシュ​​にawk -F-設定し、2番目のフィールドを印刷します。したがって、から取得されます。awkprint $2aa-bb-ccbb

おそらく、関数は次のように呼び出されると予想されます。getDateFormat something-2017-06奇妙に見えますが、2番目のダッシュで区切られたフィールドで年が選択されます。

$ii変数は参照されますが、テスト前に設定されていないため、テストはif [ $mm -eq $ii ];これを確認します[ 123 -eq ]123たぶん変数からいくつかの数字を選択するかもしれません$1)。演算子に-eq他のオペランドがないため、エラーが発生します。

おすすめ記事