Linux シェル,Ubuntuでは、functionは使用不可

スポンサーリンク

鍛錬 165

Linux シェルスクリプト,Ubuntuではfunctionは使用不可

Ubuntu にて、シェルスクリプトで関数を記述する際、「function 関数名 ()」と記述すると、以下に示すようなエラーが表示されます。

Syntax error: “(” unexpected

これは、Ubuntu の /bin/sh が bash ではなく dash だからです。
 
/bin/sh を確認

以下は、Ubuntu の /bin/sh について確認しています。
/bin/sh が dash であることが分かります。

***@ubuntu:~/***/test$ 
***@ubuntu:~/***/test$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 25 13:31 /bin/sh -> dash

 
解決策

シェルスクリプトの先頭で「#!/bin/sh」を「#!/bin/bash」と書き換えれば、関数を記述する際に「function 関数名 ()」と記述しても正常に処理されますが、「#!/bin/sh」を変更できない場合は、function を除いて「関数名 ()」と記述すると、dash でも正常に処理されます。

タイトルとURLをコピーしました