请解释下面的命令

请解释下面的命令
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是第一个位置参数,即函数的参数。将 s 字段分隔符awk -F-设置awk为破折号,并print $2打印第二个字段。所以从aa-bb-cc,你会得到bb

据推测,该函数预计会被调用为,getDateFormat something-2017-06这看起来很奇怪,但年份是从第二个破折号分隔的字段中选取的。

$ii会引用一个变量,但它在测试之前没有设置if [ $mm -eq $ii ];,因此测试会看到[ 123 -eq ]123可能从 中选取一些数字$1)。这会导致错误,因为运算符-eq缺少另一个操作数。

相关内容