我不太熟悉编写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
答案 0 :(得分:2)
您的if
/ else
末尾缺少fi
。
|
在两个命令之间创建一个管道,第一个命令的输出作为第二个命令的输入。顺便说一句,if
语句中的第二个管道不应带有方括号。并且grep NEWFILE
应该是grep "$NEWFILE"
:
if lsof | grep "$NEWFILE"; then
使用ShellCheck捕获这些类型的错误。