エラーメッセージ 予期しないトークン `( ‘の近くの構文エラー Unixタイプの環境であるCygwin、およびWindowsのコマンドラインインターフェイスで発生します。このエラーは、古いDOS / WindowsまたはMacシステムで編集または作成されたシェルスクリプトを実行しようとしたときに発生する可能性があります。
予期しないトークン `( ‘の近くの構文エラー
このエラーメッセージは、ファイルを手動でコピーするなどの日常的なタスクのためにLinuxコマンドラインにコマンドを入力するときにも表示されます。このエラーメッセージが発生する主な理由は、構文が正しくないか、OSが別のシステムのコマンドを解釈する際の問題です。シェル。
予期しないトークン `( ‘の近くで構文エラーが発生する原因は何ですか?
このエラーメッセージの理由は非常に多様であり、コマンドの実行時に構文が間違っている可能性が何千もあるため、1つの記事に記載することはできません。このエラーの主な理由は次のとおりです。
- 構文が間違っています いずれかのプラットフォームでコマンドを実行する場合。コマンドを正しく使用していないか、間違った構文を入力しました。
- シェルはそうではありません 互換性があります Unix / DOSシステム間。
- からbashシェルスクリプトを実行する際に問題があります 別の情報源 。
この記事では、コーディングの基本を理解し、何をしているのかを理解していることを前提としています。初心者の場合は、実行しようとしている言語/コマンドの詳細なチュートリアルに従うことをお勧めします。構文を間違えた可能性があります。
解決策1:コマンドの構文と形式を確認する
このエラーメッセージが表示される最初の最大の理由は、コードの構文が間違っているか、コマンドの正確な形式に従わないことです。各コマンドには、ドキュメントで確認できる事前定義された形式があります。いくつかのパラメーターはオプションであり、他のパラメーターは必須です。
さらに、特別な注意が必要です 余分なスペース 、の使用 二重引用符 、 そしてその 必須 必要なパラメータ。それらのいずれかが欠落しているか、正しく宣言されていない場合、コードを実行することはできません。
たとえば、次のコードの代わりに
[mycom7]#。/ ctopo.sh um_test1 [(1,2)、(2,1)]
あなたはそれをとして実行する必要があります
[mycom7]#。/ ctopo.sh um_test1 '[(1,2)、(2,1)]'
また、コマンド/シェルスクリプトが複数行にまたがっている場合は、正しく実行していることを確認してください。
パラメータタイプのため、二重引用符が必要です。余分なスペースもコードを台無しにし、エラーメッセージを強制する可能性があります。必ず確認してください 公式ドキュメント 実行しているコマンドを確認し、そこに問題があるかどうかを確認します。
解決策2:シェルスクリプトのトラブルシューティング
ソースシステムで機能するがターゲットでエラーを返すシェルスクリプトを使用している場合は、実行中に保存されている変数を確認してスクリプトのトラブルシューティングを行い、問題の原因を確認できます。これは非常に一般的な原因です。いくつかの場合、シェルは印刷できない文字を解釈しようとします。
「vx」のパラメータを使用してシェルを実行してみてください。これにより、実行されているコマンドとスクリプトに保存されている値が表示されます。ここから、問題のトラブルシューティングと診断を行うことができます。
たとえば、「vx」を次のように含めた後、ターミナルでスクリプトを実行します。
#sh -vx ./test_script5.sh
次のように「cat」コマンドを使用して、スクリプトの内容を確認できます。
#cat test_script5.sh
解決策3:「dos2unix.exe」コマンドを使用する
Windows / DOSテキストファイルでは、改行はキャリッジリターン( r)とそれに続く改行( n)の組み合わせです。 Mac(Mac OS Xより前)では、改行は単純なキャリッジリターン( r)を使用していました。 Unix / LinuxおよびMacOS Xは、改行( n)改行を使用します。 Cygwinを使用している場合、余分なキャリッジリターン( r)文字が原因で、DOS / Windowsおよび古いMacで作成されたスクリプトの処理に失敗します。
「dos2unix.exe」コマンドの使用
ここでは、スクリプトを正しい形式に変換する「dos2unix.exe」コマンドを作成して、問題なく実行できます。
結論として、コマンドと使用しているプラットフォームのタイプを調査し、矛盾がないことを確認する必要があります。すべての可能性をカバーすることはできないので、どのような種類のエラーが発生する可能性があり、どのように修正するかがわかります。
読んだ3分