4

このスクリプトを実行したい:

#!/bin/bash
echo <(true)

私はそれを次のように実行します:

sh file.sh

そして、私は " Syntax error: "(" unexpected" を取得します。同様の状況をいくつか見つけましたが、まだこれを解決できません。私はシェルスクリプトの初心者ですが、私が理解しているように:

  1. 私が使用するシバンは正しく、bash シェルを選択するため、プロセス置換構文が機能するはずです
  2. コマンドラインから同じことを試してみましたが、うまくいきました。で確認したところecho $0、「bash」が表示されました。コマンドラインでコマンドを実行することと、同じシェルを呼び出すスクリプトとの違いは何ですか?

単純なことかもしれませんが、説明や解決策が見つかりませんでした。

4

2 に答える 2

7

でスクリプトを実行する必要がありますbash。つまり、実行可能に設定した後bash ./script.sh、シバンを使用するか、使用します。Cyrusがコメントしたように、エラーが発生するのは./script.shで実行するだけです。sh ./script.sh

参照: unix.SE でのシバンの役割

于 2015-08-16T19:25:33.877 に答える
0

or (etc.) ファイルから削除export POSIXLY_CORRECT=1します。~/.bashrc~/.profile

問題は、プロセス置換が posix 標準の一部ではない追加の bash 機能であることです。

于 2020-07-06T18:25:13.543 に答える