2番目の名前で関数(タスク)を呼び出す

2番目の名前で関数(タスク)を呼び出す

restoreバックアップディレクトリから現在のディレクトリにファイルをコピーする関数を作成しています。今すぐ呼び出すために復元するハードリンクを作成する必要がありますpurge。クリアするために呼び出されたときに復元ステートメントを使用できるように、これをどのように実装しますかifif [ "$0" = "purge" ]

私のコードは次のとおりです。テストしたのでコードを減らします(動作します)。

restore(){
if [ "$1" = "-p" ] || [ "$0" = "purge" ]; then
while [ ! ]
    do
    #Purge code, etc...
    done


elif [ "$1" != "-p" ]; then
select fname in $(find /$HOME/Backup -name "$1*" | sed 's!.*/!!' | sed 's!$1!!') quit
        do
             #If restore is called with an argument code...
        done

local newfname=$(echo "$fname"|sed -E 's/[0-9]{11}$//')
cp -i "/$HOME/Backup/$fname" "$newfname"
exit 0
fi

while [ ! ]
do
fname=""
select fname in $(ls /$HOME/Backup) quit
        do
            #Restore with no arguments code...
        done

local newfname=$(echo "$fname"|sed -E 's/[0-9]{11}$//')
cp -i "/$HOME/Backup/$fname" "$newfname"
done
}

このオプションを使用してリカバリを呼び出すことは、クリーンアップで-pリカバリを呼び出すのと同じです。それでは、パージを使用して復元を呼び出すためにコードをどのように実装しますか?

関数ではなくスクリプトでなければなりません。Restore.shnameへのハードリンクを作成しましたPurge.shが、./Purge.shを使用して呼び出すと、まだ標準の復元コードが実行されます。ハードリンクされたファイルに対して復元が呼び出されたかどうかはどうすればわかりますか?

ベストアンサー1

これは不正行為かもしれませんか?回復スクリプトはまだ-pロジックを維持し、次のように別々のクリーンアップ機能を作成します。

purge () { /path/to/restore.sh -p "$@"; }

回復スクリプトから関数ラッパーを取り出す必要があります。そうでなければ、本質的に実行されるのではなくインポートするだけだと思います。

おすすめ記事