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

问题描述 投票:0回答:1

我有这个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:line 28:语法错误:意外的文件结束

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

bash shell
1个回答
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,其中包含有关错误的更多信息。从写作中可能不清楚的是,}被视为文字参数的事实意味着它不被视为函数定义的结尾;到达脚本文件的末尾时,该功能仍处于打开状态。

© www.soinside.com 2019 - 2024. All rights reserved.