无法获取bash脚本 - 意外的文件结尾

时间:2018-03-01 01:48:25

标签: bash shell

我有这个bash脚本:

#!/usr/bin/env bash


function onqltrap {
  echo "process with pid $$ was trapped.";
   fle=$(echo "$(pwd)" | tr "/" _);
   rm -f fle;
}

function qltrap {
   trap onqltrap EXIT;
}

function qlstart {
  set -e;
  trap onqltrap EXIT;
  mkdir -p "$HOME/.quicklock/locks"
  fle=$(echo "$(pwd)" | tr "/" _)
  mkdir "$HOME/${fle}.lock" || { echo "quicklock could not acquire lock."; exit 1 }
}

function qlstartold {
   mkdir -p "$HOME/.quicklock/fifo"
   rm "$HOME/.quicklock/fifo/$$.fifo"
   mkfifo "$HOME/.quicklock/fifo/$$.fifo"
}

当我在脚本中获取此文件时,出现此错误:

  

bash下   /Users/alexamil/WebstormProjects/oresoftware/quicklock/quicklock-trap.sh:   第28行:语法错误:意外的文件结尾

有谁知道为什么会发生错误?

1 个答案:

答案 0 :(得分:3)

使用http://shellcheck.net摘要中强烈建议的有用的,我发现:

Line 19:
  mkdir "$HOME/${fle}.lock" || { echo "quicklock could not acquire lock."; exit 1 }
>>                                                                                ^-- SC1083: This } is literal. Check expression (missing ;/\n?) or quote it.

(向右滚动以查看错误。)

在原始输出中,SC1083链接到https://github.com/koalaman/shellcheck/wiki/SC1083,其中包含有关错误的更多信息。从写作中可能不清楚的是,} 被视为文字参数这一事实意味着它不被视为函数定义的结尾;到达脚本文件的末尾时,该功能仍然打开。