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

相关内容