我有这个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行:语法错误:意外的文件结尾
有谁知道为什么会发生错误?
答案 0 :(得分:3)
使用http://shellcheck.net摘要中强烈建议的有用的bash,我发现:
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,其中包含有关错误的更多信息。从写作中可能不清楚的是,} 被视为文字参数这一事实意味着它不被视为函数定义的结尾;到达脚本文件的末尾时,该功能仍然打开。