gpt4 book ai didi

linux - shell 脚本中的意外 token 'done'

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:52 24 4
gpt4 key购买 nike

我非常不熟悉编写 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

最佳答案

您的 if/else 末尾缺少一个 fi

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

if lsof | grep "$NEWFILE"; then

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

关于linux - shell 脚本中的意外 token 'done',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50980086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com