シェルスクリプトを使用して2つのファイル名を変更する

シェルスクリプトを使用して2つのファイル名を変更する

私は次のスクリプトを作成しましたrename_2_files.sh

#!/bin/sh
#_start
while getopts o: flag
do
   case "${flag}" in
       o) OPTION=${OPTARG};;
   esac
done
# declare variable
RENAME ="rename"
DEFAULT ="default"
# show all ExportP* files
ls '/home/dev/Documents/Work/info/Target_script/first'*
# rename file
if [["$OPTION" == "$RENAME"]]; 
then
   mv '/home/dev/Documents/Work/info/Target_script/first1.txt' '/home/dev/Documents/Work/info/Target_script/first1_ori.txt'
   mv '/home/dev/Documents/Work/info/Target_script/first2_SL.txt' '/home/dev/Documents/Work/info/Target_script/first2.txt'
fi
# show new name o files
ls '/home/dev/Documents/Work/info/Target_script/first'*

#_end

私はそれを使って実行します

sh rename_2_files.sh -o rename

返信:

rename_2_files.sh: 10: rename_2_files.sh: RENAME: not found
rename_2_files.sh: 11: rename_2_files.sh: DEFAULT: not found
/home/dev/Documents/Work/info/Target_script/first1.txt
/home/dev/Documents/Work/info/Target_script/first2_SL.txt 
rename_2_files.sh: 20: rename_2_files.sh: [[Rename: not found
/home/dev/Documents/Work/info/Target_script/first1.txt
/home/dev/Documents/Work/info/Target_script/first2_SL.txt

これに関して、どのような問題がありますか?助けてください...

ベストアンサー1


私のスクリプトには構文エラーがたくさんありますが、https://www.shellcheck.net/を使用してこれを修正します。

今私のスクリプト( 'rename_2_files.sh')は次のようになります。

#!/bin/sh
#_start
while getopts o: flag
do
    case "${flag}" in
        o) OPTION=${OPTARG};;
        *)
    esac
done
# declare variable
RENAME="rename"
DEFAULT="default"
# show all ExportP* files
ls '/home/dev/Documents/Work/info/Target_script/first'*
# rename file
if [ "$OPTION" = "$RENAME" ]; then
    mv '/home/dev/Documents/Work/info/Target_script/first1.txt' '/home/dev/Documents/Work/info/Target_script/first1_ori.txt'
    mv '/home/dev/Documents/Work/info/Target_script/first2_SL.txt' '/home/dev/Documents/Work/info/Target_script/first2.txt'
elif [ "$OPTION" = "$DEFAULT" ]; then
    mv '/home/dev/Documents/Work/info/Target_script/first1_ori.txt' '/home/dev/Documents/Work/info/Target_script/first1.txt'
    mv '/home/dev/Documents/Work/info/Target_script/first2.txt' '/home/dev/Documents/Work/info/Target_script/first2_SL.txt'
fi
# show new name o files
ls '/home/dev/Documents/Work/info/Target_script/first'*

#_end

そして私が使用しているスクリプトの実行を呼び出すには: sh rename_2_files.sh -o rename または sh rename_2_files.sh -o default

みんな良い一日を過ごし、大きな成功を収めてください!

おすすめ記事