Shell脚本中的意外令牌“完成”

时间:2018-06-22 03:06:21

标签: linux shell

我不太熟悉编写Shell脚本,但是我试图编写一个脚本,该脚本在执行命令之前检查当前是否打开了文件。我收到以下错误

 ./Script.sh: line 9: syntax error near unexpected token `done'
./Script.sh: line 9: `done'

作为奖励,我不知道"|"运算符的确找到了一些shell语法站点,但由于很难用一个字符来搜索其目的,所以很困难。

#!/bin/bash

inotifywait -m -r -e create "sunshine" | while read NEWFILE
do
        if [ lsof | grep NEWFILE ]; then
                echo "found something";
        else
                aws s3 sync sunshine s3://turnaround-sunshine/
done

1 个答案:

答案 0 :(得分:2)

您的if / else末尾缺少fi

|在两个命令之间创建一个管道,第一个命令的输出作为第二个命令的输入。顺便说一句,if语句中的第二个管道不应带有方括号。并且grep NEWFILE应该是grep "$NEWFILE"

if lsof | grep "$NEWFILE"; then

使用ShellCheck捕获这些类型的错误。