Ubuntuサーバーに(提供されたファイルを使用して)インストールしたソフトウェアサービスは.deb
起動されません。サービスを実行するとエラーが発生します。
/etc/init.d/matrixsa: 44: Syntax error: "}" unexpected (expecting "fi")
これはスクリプトの関連部分です。シェルスクリプトに慣れていないので、これがうまくいくかどうかわかりません。
if [ -f /etc/rc.d/init.d/functions ]
then
. /etc/rc.d/init.d/functions
else
function action {
echo "$1"
shift
$@
} # <-- this is line 44
function success {
echo -n "Success"
}
function failure {
echo -n "Failed"
}
fi
答え1
$@
関数を突然構文的に無効にする内容を含め、何でも含めることができます。代わりに引用してみてください。壊れないスクリプトのバージョンは次のとおりです。
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
action() {
printf '%s\n' "$1"
shift
"$@"
}
success() { printf Success ; }
failure() { printf Failed ; }
fi
または、同様の機能を使用している場合は、bash
次の機能を使用できますaction
。
action() {
printf '%s\n' "$1"
"${@:2}"
}
元のスクリプトのようにIFSで分割されることが重要な場合(おそらくそうではないかもしれません)、引用符をオフにしてください$@
。
Bashではなくシェルで実行することもできます。function
bashismです。代わりに使用してくださいfunc()
。