Bash 스크립트, 이름을 확인하고 "script_name".sh와 일치하지 않으면 .sh를 이름에 연결하고 저장합니다.

Bash 스크립트, 이름을 확인하고 "script_name".sh와 일치하지 않으면 .sh를 이름에 연결하고 저장합니다.

나는 다음과 같은 것을 생각해 냈습니다.

#!/bin/bash
FILE_NAME="$0"
EXTENSION=".sh"
FILE_NAME_MOD="$FILE_NAME$EXTENSION"

if [[ "$0" != "FILE_NAME_MOD" ]]; then
  cp "$0" | sed 's/\([^.sh]\)$/\1.sh/g' $0
fi

분명히 문제가 있는 것 같은데 해결책을 찾도록 도와주세요.

답변1

다음 문장 을 시도해 보세요 case.

FILE_NAME=$0
EXTENSION='.sh'
FILE_NAME_MOD="$FILE_NAME$EXTENSION"

case "$FILE_NAME" in
    *"$EXTENSION") ;;
    * ) mv -i "$FILE_NAME" "$FILE_NAME_MOD" &&
        printf '%s\n' "file has been renamed to '$FILE_NAME_MOD'" ;;
esac                      
  • FILE_NAME아직 끝나지 EXTENSION않은 경우FILE_NAME_MOD

관련 정보