If 문 사용 [닫기]

If 문 사용 [닫기]

Bash에서 If/else 문을 사용하려고 합니다. 어느 것이 올바른 구문인지 혼란스럽습니다.

  if [ "$NUMBER_dcn" -gt $NO ]
  then
  dir_dcn='/mnt/md0/capture'
  fi

또는

   if [ "{$NUMBER_dcn}" -gt $NO ]
  then
  dir_dcn='/mnt/md0/capture'
  fi

NUMBER_dcn은 다음을 사용하여 채워집니다.

NUMBER_dcn=$(find /mnt/md0/capture/ -maxdepth 1 -name "*.pcap" |wc -l)

둘 중 하나는 "예상 정수 표현식" 오류를 표시하므로 둘 다 정확합니다.

답변1

변수를 참조하는 올바른 방법은 입니다 $VAR. VAR패딩이 이므로 항상 wcnull이 아니라고 가정하고 실제로 따옴표가 필요하지 않습니다. ""이는 변수가 완전히 비어 있는 경우를 방지하기 위한 것입니다.

그러나 이것은 귀하의 문제가 아닙니다. 이 -gt연산자에는 두 개의 인수가 필요할 뿐만 아니라 정수여야 합니다. 여기서 전달하려는 내용은 -gt예를 들어 50하나의 경우와 {50}다른 경우입니다. 후자는 정수 표현식이 아니라 로 시작하는 문자열이므로 {중괄호를 제거해야 합니다.

중괄호는 변수를 사용하기 위해 허용되는 대체 구문입니다. $VAR와 동일합니다 ${VAR}. 이것은 때때로 다음과 같은 경우에 유용합니다.끼워 넣다변수의 방식은 변수 이름이 끝나는 위치가 명확하지 않습니다. 예를 들어, 변수 값과 인덱스를 인쇄하려면 다음과 같이 작성해야 하는 경우가 있습니다.

echo ${VAR}00

이와 같은 출력을 얻으십시오 Hugo00. 중괄호가 없으면 bash는 변수를 역참조하려고 시도 VAR00하지만 그러한 변수가 존재하지 않기 때문에 실패합니다. (이 경우 중괄호 앞에는 달러 기호가 있습니다.) 그러나 아무것도 삽입하지 않고 변수를 있는 그대로 사용하므로 중괄호를 사용할 필요가 없습니다.

관련 정보