簡體   English   中英

我的bash腳本中出現“意外令牌'fi'附近的語法錯誤”

[英]Getting “syntax error near unexpected token `fi'” in my bash script

我很確定我的語法有問題。 我編寫了一個簡單的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

還放一個; 在那之前。

當將thenif放在同一行時,您需要; 定界符。 你不需要它,如果then是下一行。

for *condition* ; do 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

您可以在以下位置檢查腳本中是否存在此類錯誤

http://www.shellcheck.net/

我通常用它來發現我的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM