![Bash 스크립트, 이름을 확인하고 "script_name".sh와 일치하지 않으면 .sh를 이름에 연결하고 저장합니다.](https://linux55.com/image/169775/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%2C%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%ED%99%95%EC%9D%B8%ED%95%98%EA%B3%A0%20%22script_name%22.sh%EC%99%80%20%EC%9D%BC%EC%B9%98%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9C%BC%EB%A9%B4%20.sh%EB%A5%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%98%EA%B3%A0%20%EC%A0%80%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
나는 다음과 같은 것을 생각해 냈습니다.
#!/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