ファイルを削除した後、元の場所に復元するスクリプトを作成していますが、このエラーが引き続き表示されます。この問題を解決する理由と方法は何ですか?
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f file found..."
read -p "Do you want to recover this file? [Yes/No] " confirmation
[[ $confirmation =~ ^[YyJj] ]] || { echo "Canceled"; exit }
cp -v "$f" "$1"
fi
答え1
エラーは次の行で発生します。
[[ $confirmation =~ ^[YyJj] ]] || { echo "Canceled"; exit }
ブロックの終わりを示すために終了した後にセミコロンを追加すると、少なくとも次のエラーが発生しないようにする必要があります。
[[ $confirmation =~ ^[YyJj] ]] || { echo "Canceled"; exit; }
つまり、私はこのタイプの表記法があまり好きではなく、OPで投稿したケースのような場合には個人的に必要ではないと思います。この構文の問題を回避するために完全なステートメントを書くことはそれほど難しくありませんif/then/fi
。