错误不断出现“意外的 tokefi 附近出现语法错误”

错误不断出现“意外的 tokefi 附近出现语法错误”

我正在创建一个脚本来将文件删除后恢复到其原始位置,但我一直弹出此错误。为什么以及如何解决这个问题?

 #!/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语句来避免此类语法问题并不是那么困难,而且写出它将使脚本在将来更易于阅读、共享或调试。

相关内容