スクリプトが自分で削除されるのを防ぐ方法

スクリプトが自分で削除されるのを防ぐ方法

こんにちは。 「safe_rm」というゴミ箱スクリプトを作成しています。スクリプトが自分のファイルを削除するのを防ぐ方法を知りたいです。私はreadlinkコマンドが解決策だと思いますが、それをスクリプトに書き込む方法がわかりません。

これは私の現在のコードです。

while [ $# -ne 0 ]
   do

    if [ ! -e "$1" ] ; then
            echo "File not found."
    elif [ -d "$1" ] ; then
            echo "Error. You have entered a directory."
    elif [ $1 = $(readlink -e ~/project/safe_rm) ] ;
            echo "Attempting to delete safe_rm - operation aborted"
            exit 0

    else
    inode=` ls -i $1 | cut -d" " -f1 `
    echo $1_$inode:$(readlink -e $1) >> /home/j.t/.restore.info
    mv $1 /home/j.t/deleted/$1_$inode

    echo "File '$1' has been moved to the recycle bin."
    fi

shift
done

変更するコードは8行目にあります。

ベストアンサー1

実行可能なソリューションは今1段階残っています。変数を正規化すると完了です。

elif [ "$(readlink -e "$1")" = "$(readlink -e ~/project/safe_rm)" ] ;

パスにスペースが含まれる可能性があるため、すべての項目を引用符で囲みました。$(…)サブシェルの内部では、引用符をエスケープする必要はありません。修正してくれた@glenn jackmanに感謝します。

おすすめ記事