シェルスクリプトに失敗しました:構文エラー: '( '予期しない

シェルスクリプトに失敗しました:構文エラー: '( '予期しない

私はラズベリーパイ開発のための開発環境を自動的に設定するスクリプト作業をしてきました(作業の段階的な詳細は次のとおりです)。ここ)。スクリプトはその記事にリンクされていますが、便宜上、ここで見つけることができます。ここ返品。このスクリプトを実行すると、エラーなしで環境をインストールして設定できますが、デフォルトのsudoタイムアウトのためにsudoパスワードを複数回入力する必要があります。だから私はすべてのsudo行を削除し、次のようにコマンドラインからsudoを介してスクリプト全体を実行することから始めました。

kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh

これは期待通りにうまく機能し、これまでほとんどの作業を行います。

./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected

これで、以前はsudoなしでスクリプト全体を実行したときに、この行が正しく機能しました。私が知っている限り、sudoが動作を妨げないので、この行を実行している人はいますか?

ベストアンサー1

スクリプトは次から始まりません。シェルボーンわかりましたので、システムはそれを実行するために使用します/bin/sh。 Ubuntuでは/bin/shそうですスプリント、標準機能のみを備えたクイックスタートおよび実行用に設計されたシェルです。ダッシュが68行に達すると、構文エラーが表示されます。つまり、文脈上の括弧は意味がありません。

ダッシュ(他のすべてのシェルと同様)はソルバーなので、実行が問題のある行に達するまで文句を言いません。したがって、テストのどの時点でスクリプトが正常に開始されても、68行目に達すると中断されます。

shebang行はファイルの最初の行でなければなりません。 bash機能を使用しているため、ファイルの最初の行はまたはで#!/bin/bashなければなりません#!/usr/bin/env bash

おすすめ記事