web-dev-qa-db-ja.com

予期しないトークン `<'に近い構文エラー

変数aおよびbへのコマンドの出力を読み取るスクリプトを書いています。これはスクリプトです

#!/bin/bash

read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)

echo "The value of a is $a"
echo "The value of b is $b"

そして構文エラーを次のように取得します:

line 3: syntax error near unexpected token `<'
line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)'

しかし、コンソールで同じコマンドを入力すると、問題なく機能します。

app@user:/tmp> read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)
app@user:/tmp> echo $a
FAILED
app@user:/tmp> echo $b
STARTED

これに関するどんな助けでも本当にありがたいです。

7
Sudev Jash

sh(ほとんどの(Debian派生)システムではdashにリンクされています)は、プロセスの置換を許可しませんbash script.shで呼び出してみてください。 ./script.shによる同じ呼び出しは、スクリプト内でsha-bangである/bin/bashで実行されます。

14
Costas

スクリプトをsh file.shとして呼び出そうとして、エラーが発生しました。しかし、私が./file.shおよびbash file.shと同じスクリプトを呼び出したとき、それは機能していて、望ましい結果を与えています。

0
Sudev Jash