1. ホーム
  2. bash

[解決済み】予期しないトークン 'fi' 付近の構文エラー

2022-02-11 09:08:38

質問

末尾が奇数の .jpg をすべて削除するスクリプトを書こうとしています。これは私のコードです。

#!/bin/bash
echo "start\n"
for f in *.jpg
do
  fname=$(basename "$f")
  echo "fname is $fname\n"
  fname="${filename%.*}"
  echo "fname is $fname\n"
  if[$((fname %  2)) -eq 1 ] then
    echo "removing $fname\n"
    rm $f
  fi
done

実行すると、start と出力された後、"syntax error near unexpected token 'fi'" と表示されます。

ifの後の行にthenがあると、"syntax error near unexpected token 'then'" と表示されました。

どうすれば直せますか?

解決方法は?

と同様に then を改行して、その前後にスペースが必要です。 [ これはBASHの特別なシンボルです。

#!/bin/bash
echo "start\n"
for f in *.jpg
do
  fname=$(basename "$f")
  echo "fname is $fname\n"
  fname="${filename%.*}"
  echo "fname is $fname\n"
  if [ $((fname %  2)) -eq 1 ]
  then
    echo "removing $fname\n"
    rm "$f"
  fi
done