bash 별칭에서 else if(작업) 사용

bash 별칭에서 else if(작업) 사용

내 과제에서는 주어진 파일이 규칙적이고 읽을 수 있는지 확인하기 위해 별칭을 작성해야 합니다. 내가 겪고 있는 문제는 else if 또는 elif를 포함하면 이 오류가 발생한다는 것입니다...

-bash: syntax error near unexpected token `else'

이건 내 코드야...

alias getname='read filename'

alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $filename]; then echo "Not readable"; (exit 2); fi;'

오류가 발생하면 명령문만 인쇄되도록 하려면 else if를 사용해야 합니다.

쉘 함수나 스크립트가 더 실용적이라는 것을 알고 있지만 할당을 위해서는 별칭을 사용해야 합니다. 저는 UNIX를 처음 접했기 때문에 도움을 주시면 대단히 감사하겠습니다.

편집: 귀하가 제공한 파일 이름(정적 파일)인 별칭을 사용해야 했으며, 이를 변경하더라도 질문에 설명된 구문 오류가 계속 발생합니다 else if.elif

편집 2: 문제를 발견하고 fi;elif 문 이전의 내용을 제거했지만 이제 오류가 발생합니다 missing ']'.

답변1

그래서 이것은 나에게 효과적입니다.

alias vfile='read -p "Enter the filename: " MY_FILE; if [ ! -f $MY_FILE ]; then echo "Irregular file"; (exit 1); elif [ ! -r $MY_FILE ]; then echo "Not readable"; (exit 2); fi'

편집하다 나는 당신이 거기서 무엇을 했는지 봅니다 =)

읽기 쉽도록 명령이 여기에 분류되어 있습니다.

alias vfile='read -p "Enter the filename: " MY_FILE; \
if [ ! -f $MY_FILE ]; then \
echo "Irregular file"; \
(exit 1); \
elif [ ! -r $MY_FILE ]; then \
echo "Not readable"; \
(exit 2); \
fi'

관련 정보