语法错误:bash 脚本中出现意外“(”

语法错误:bash 脚本中出现意外“(”

该脚本用于将 torrent 文件添加到文件夹并将其添加到传输中。以下是脚本:

#!/bin/bash
for file in /home/me/box/*/*
do
dir=$(basename $(dirname "$file"));
sudo chmod 0777 /var/log/torrentwatch.log
sudo chmod -R 0777 /home/me/box/*/*
if "$file" = "/home/me/box/*/*.torrent"; then
echo [`date`] "$file" added to queue. >> /var/log/torrentwatch.log
/usr/bin/transmission-remote localhost:9091 --auth=transmission:transmission -l -w /media/Media/Torrents/$dir -a "$file"
sleep 40 && rm "$file"
sleep 3 && sudo chmod -R 777 /media/Media && sudo chown -R debian-transmission:debian-transmission /media/Media/info
fi
done

问题是当我运行脚本时

/home/me/box/TV/Name.of.file.torrent: Syntax error: "(" unexpected

我尝试使用 bash、sh 和 zsh 运行该脚本,但似乎都不起作用。我不知道问题出在哪里。

答案1

从我所看到的您的脚本来看,存在几个问题。

尝试以下操作。替换

dir=$(basename $(dirname "$file"));

dir=$(basename "$(dirname "$file")");

这应该可以解决您的错误,但是我还建议您做其他几件事:

echo [`date`] "$file" added to queue. >> /var/log/torrentwatch.log

我会把它改成

 echo "[$(date)]" "$file" added to queue. >> /var/log/torrentwatch.log

这可以避免一些问题,其中包括单词分割,以及有点危险且不可移植的“。”的使用。

/usr/bin/transmission-remote localhost:9091 --auth=transmission:transmission -l -w /media/Media/Torrents/$dir -a "$file"

我会将其改为:

/usr/bin/transmission-remote localhost:9091 --auth=transmission:transmission -l -w /media/Media/Torrents/"$dir" -a "$file"

这将防止通配符和单词分割。

相关内容