さくらインターネットのレンタルサーバーでシェルスクリプトをcronで仕掛けているのですが、そのシェルスクリプトのfunction部分で、
Syntax error: “(” unexpected
となっていました。このエラーの解決策です。
結論、shellの実行shを変更する
![](https://www.bekutoru.com/wp-content/uploads/2021/08/image-7.png)
何が起きていたかというと、
この環境のshellでは”function関数が使えない”
というエラーでした。
なので、手としましては
- 実行shellを変更するか
- 関数を使わないか
のどちらかですね。
cshには関数はない
![](https://www.bekutoru.com/wp-content/uploads/2021/08/image-9.png)
man csh
でcshのマニュアルを確認しましたが、関数に関する記載がありませんでした。
cshは関数が無いようです。逆に、以下のリンクにあるようにgotoがあるようですね。
![](https://www.bekutoru.com/wp-content/uploads/2021/08/image-10.png)
shを使えば関数は使える(ただしfunctionではない)
![](https://www.bekutoru.com/wp-content/uploads/2021/08/image-6.png)
man sh
を確認してみたところ、shでは関数は使用出来ました。
ただし、function 名前() {コマンド}ではなく
名前() {コマンド}
という関数定義の仕方でした。
この修正でシェルスクリプト実行時に「 Syntax error: “(” unexpected 」がエラー出なくなりました。
Linuxはマニュアルが正義ですね!
コメント