다음 명령을 설명해주세요.

다음 명령을 설명해주세요.
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-설정 하고 두 번째 필드를 인쇄합니다. 따라서 에서 을 얻게 됩니다 .awkprint $2aa-bb-ccbb

아마도 함수는 다음과 같이 호출될 것으로 예상됩니다. getDateFormat something-2017-06이상해 보이지만 두 번째 대시로 구분된 필드에서 연도가 선택됩니다.

$ii변수가 참조되지만 테스트 전에 설정되지 않았으므로 if [ $mm -eq $ii ];테스트에서 이를 확인합니다 [ 123 -eq ]( 123어쩌면 변수에서 일부 숫자를 선택할 수도 있음 $1). 연산자에 -eq다른 피연산자가 없기 때문에 오류가 발생합니다.

관련 정보