"근처에 예기치 않은 tokefi 구문 오류가 발생했습니다." 오류가 계속 나타납니다.

"근처에 예기치 않은 tokefi 구문 오류가 발생했습니다." 오류가 계속 나타납니다.

파일을 삭제한 후 원래 위치로 복원하는 스크립트를 작성 중인데 계속해서 이 오류가 나타납니다. 이 문제를 해결하는 이유와 방법은 무엇입니까?

 #!/bin/bash
 if [[ ! $1 ]]; then
 echo -e "Usage:\n\n\t$0 'file name'"
 exit 1
 fi

 f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')

  if [[ $f ]]; then
  echo "fd $f file found..."
  read -p "Do you want to recover this file? [Yes/No] " confirmation
   [[ $confirmation =~ ^[YyJj] ]] || { echo "Canceled"; exit }
  cp -v "$f" "$1"
  fi

답변1

오류는 다음 줄에서 발생합니다.

[[ $confirmation =~ ^[YyJj] ]] || { echo "Canceled"; exit }

블록의 끝을 나타내기 위해 종료한 후에 세미콜론을 추가하면 최소한 다음과 같은 오류가 발생하지 않도록 해야 합니다.

[[ $confirmation =~ ^[YyJj] ]] || { echo "Canceled"; exit; }

즉, 나는 이런 유형의 표기법을 별로 좋아하지 않으며, OP에서 게시한 사례와 같은 경우에는 개인적으로 필요하지 않다고 생각합니다. 이러한 구문 문제를 피하기 위해 완전한 문을 작성하는 것은 그리 어렵지 않으며 if/then/fi, 이를 작성하면 나중에 스크립트를 더 쉽게 읽고, 공유하고, 디버깅할 수 있습니다.

관련 정보