이 코드에서 무엇이 빠졌나요? [폐쇄]

이 코드에서 무엇이 빠졌나요? [폐쇄]

계속 오류가 발생합니다( lab2.sh: line 7: syntax error at line 15: `)' unexpected)

#! /bin/sh

echo "M - Month of the year"

echo "S - Sleep for 10 seconds"

echo "E - Make the file executable"
echo "Please input a letter (M,S, or E): \c"

read code

case $code in

     M) date +%B ;;
     S)  sleep 10 ;;
     E) echo "ENter file name: \c"
      read fname
      chmod 755 $fname
     *)   
 echo "Error" ;;

esac

답변1

마지막 명령을 제외하고 중간 패턴을 따르는 모든 명령 세트는 case ... esac종료되어야 합니다.;;

당신은 가지고 있어야

M)  date +%B ;;
S)  sleep 10 ;;
E)  echo "ENter file name: \c"
    read fname
    chmod 755 "$fname" ;;
*)  echo "Error" >&2

$fname또한 공백과 특수 문자가 포함된 파일 이름을 처리할 수 있도록 따옴표를 사용 하고 진단 메시지는 표준 오류( 로 리디렉션됨 >&2)로 이동해야 합니다.


메뉴에도 사용할 수 있으며 파일에서 select실행할 때는 더욱 주의해야 합니다 .chmod

#!/bin/bash

select ch in \
    'Exit' \
    'Month of the year' \
    'Sleep for 10 seconds' \
    'Make a file executable'
do
    case $REPLY in
        1) break ;;
        2) date +'The current month is %B' ;;
        3) echo 'Sleeping for 10 seconds'
           sleep 10 ;;
        4) read -r -p 'Enter file name: ' fname
           if [ ! -f "$fname" ]; then
               printf 'No such file: %s\n' "$fname"
           else
               chmod +x "$fname"
           fi
           ;;
        *) echo 'Error' >&2
    esac
done

echo 'Bye!'

관련 정보