我正在创建一个脚本来将文件删除后恢复到其原始位置,但我一直弹出此错误。为什么以及如何解决这个问题?
#!/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
语句来避免此类语法问题并不是那么困难,而且写出它将使脚本在将来更易于阅读、共享或调试。