我很确定我的语法有问题。我做了一个简单的if/ifthen脚本,但它没有执行。我在网上找不到关于它的任何信息,因为我不知道到底是什么问题。
在修复了大部分问题之后,我得到了这个输出:
/media/satahd/media/test.sh: line 21: syntax error near unexpected token `fi'
/media/satahd/media/test.sh: line 21: `fi'
剧本如下:
#!/bin/bash
###root symlink folder:
rootmedia='/media/satahd/media/slinktest'
###root donwload folder:
rootdownload='/media/satahd/media/downloads'
TR_TORRENT_NAME=$1
TR_TORRENT_DIR=$2
anime=$rootdownload'/anime'
movie=$rootdownload'/movies'
western=$rootdownload'/western'
if [ $TR_TORRENT_DIR == $anime ] then
filebot --action symlink --conflict skip --db AniDB --format "{n} ({y})/{n} {s00e00} {t}({group} {vf})" -r -rename $anime/$TR_TORRENT_NAME non-strict --output $rootmedia/Shows/Anime --order absolute
elseif [ $TR_TORRENT_DIR == $movie ] then
filebot --action symlink --conflict skip --db themoviedb --format "{n} ({y})/{n} ({y}) {group} {vc}-{vf} {ac}-{af}" -r -rename $movie/$TR_TORRENT_NAME -non-strict --output $rootmedia/Movies
elseif [ $TR_TORRENT_DIR == $western ] then
filebot --action symlink --conflict skip --db thetvdb --format "{n} ({y})/{n} {s00e00} {t}({group} {vf})" -r -rename $western/$TR_TORRENT_NAME non-strict --output $rootmedia/Shows/Western --order absolute
fi
最佳答案
为什么不尝试使用elif
,而不是elseif
。
在那之前也放一个;
。
当您将then
与if
放在同一行时,您需要;
分隔符。如果then
在下一行,则不需要它。
如果for *condition* ; do
与do
位于同一行,则需要for
否则不需要。
这可能对你更好,我只是纠正了我提到的事情,但显然这是我不能轻易测试自己的东西。
#!/bin/bash
###root symlink folder:
rootmedia='/media/satahd/media/slinktest'
###root donwload folder:
rootdownload='/media/satahd/media/downloads'
TR_TORRENT_NAME=$1
TR_TORRENT_DIR=$2
anime=$rootdownload'/anime'
movie=$rootdownload'/movies'
western=$rootdownload'/western'
if [ $TR_TORRENT_DIR == $anime ]; then
filebot --action symlink --conflict skip --db AniDB --format "{n} ({y})/{n} {s00e00} {t}({group} {vf})" -r -rename $anime/$TR_TORRENT_NAME non-strict --output $rootmedia/Shows/Anime --order absolute
elif [ $TR_TORRENT_DIR == $movie ]; then
filebot --action symlink --conflict skip --db themoviedb --format "{n} ({y})/{n} ({y}) {group} {vc}-{vf} {ac}-{af}" -r -rename $movie/$TR_TORRENT_NAME -non-strict --output $rootmedia/Movies
elif [ $TR_TORRENT_DIR == $western ]; then
filebot --action symlink --conflict skip --db thetvdb --format "{n} ({y})/{n} {s00e00} {t}({group} {vf})" -r -rename $western/$TR_TORRENT_NAME non-strict --output $rootmedia/Shows/Western --order absolute
fi
关于linux - 我的bash脚本中出现“意外 token 'fi'附近的语法错误”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29424771/