Ubuntuマシンでbash script
を実行しようとしていますが、エラーが発生しています:
関数が見つかりません
テストのために、ラップトップでは正常に機能するがデスクトップでは機能しない次のスクリプトを作成しました。理由についてのアイデアはありますか?それが関連する場合、私のラップトップはMacです。
#!/bin/bash
function sayIt {
echo "hello world"
}
sayIt
これは私のラップトップでは「hello world」を返しますが、デスクトップでは次のように返します:
run.sh:3:関数が見つかりませんhello world run.sh:5:構文エラー: "}"予期しない
デスクトップでは、bash
ではなくdash
またはfunction
キーワードを認識しない他のPOSIX準拠のシェルで実際に実行している可能性があります。 function
キーワードは、bashism、bash拡張です。 POSIX構文はfunction
を使用せず、括弧の使用を義務付けています。
$ more a.sh
#!/bin/sh
function sayIt {
echo "hello world"
}
sayIt
$ bash a.sh
hello world
$ dash a.sh
a.sh: 3: function: not found
hello world
a.sh: 5: Syntax error: "}" unexpected
POSIX構文は次の両方で機能します。
$ more b.sh
#!/bin/sh
sayIt () {
echo "hello world"
}
sayIt
$ bash b.sh
hello world
$ dash b.sh
hello world
私は同じ問題に直面し、構文を修正しました。 削除キーワードfunctionおよびadd- 括弧()関数名の後に。
#!/bin/bash
sayIt()
{
echo "hello world"
}
sayIt
ls -la/bin/sh
bashまたはdashを指すsymリンクを確認します