-2
if [[ ${account_nr} =~ ^[0-9]+$ &&  ${from_account_nr} =~ ^[0-9]+$ ]]

これは、口座番号が数値かどうかを確認するためのものです。構文エラーが発生します。

この質問の以前のバージョンでは、if[[;の間にスペースがありませんでした。実際のコードには必要なスペースがあります。

以下のエラー メッセージが表示されます。

syntax error: `${account_nr}' missing expression operator

私はbashシェルを使用しています。あなたはそれが機能していると言っています。しかし、私は以下のような例で試していますが、エラーが発生しています。

jai = "CNM"
hanuman = "BRK"
if [[ $jai =~ ^[0-9]+$ && $hanuman =~ ^[0-9]+$  ]]
then
  echo "Jai hanuman"
  echo "valid input"
fi

以下のようなエラーが表示されます。

./temp.sh: line 11: jai: command not found
./temp.sh: line 12: hanuman: command not found

私の実際のプログラムでは機能していません:「今、私は問題を詳細に説明しています:」

  1. 1 つのファイルに、すべてのトランザクションの詳細を 1 つのトランザクションの各行に保存しました。
  2. 以下の while ループを使用して 1 つのトランザクションの詳細を読み取るたびに while read blank srvrtid 空白 member_nr 空白 account_nr 空白 acct_type 空白 routing_nr 空白 amount 空白 proc_date 空白 from_account_nr 空白 from_acct_type 空白 do
  3. この中で、account_nr と from_account_nr の値が数値であるか、以下に指定した if 条件でないかを確認したい

    if [[ ${SQL_STATEMENT} -gt 0 && ${account_nr} =~ ^[0-9]+$ && ${from_account_nr} =~ ^[0-9]+$ ]]

  4. のエラーは表示されません&{SQL_STATEMENT}。これにSQL_STATEMENTは、SELECT クエリによって返される値が割り当てられます (トランザクションの総数)。

  5. スクリプトを実行すると、以下のエラーが表示されます。

    構文エラー: `${account_nr}' 式演算子がありません。

私の問題を助けてください。

4

2 に答える 2

3

ifと の間にはスペースが必要です[:

$ account_num=1234
$ if [[ ${accoun_num} =~ ^[0-9]+$ ]] ; then echo "foo" ; fi
foo
$

また、これは次の場合でも正常に機能しbashます。

$ account_nr=1234
$ from_account_nr=9876
$ if [[ ${account_nr} =~ ^[0-9]+$ && ${from_account_nr} =~ ^[0-9]+$ ]] ; then echo "foo" ; fi
foo
$

シェル変数の割り当ての前後にスペースを入れることもできません。以下は、最新バージョンの修正です。

jai="CNM"
hanuman="BRK"
if [[ $jai =~ ^[0-9]+$ && $hanuman =~ ^[0-9]+$  ]]
then
  echo "Jai hanuman"
  echo "valid input"
fi

どちらjaihanuman数値ではないため、上記のスクリプトは実行され、何も出力されません。両方を数値に設定すると、次のように表示されます。

Jai hanuman
valid input

スペースを入れる場合は、次のように注意してください。

jai = "CNM"

次に、シェル ( bash) は、呼び出されたコマンドを実行していると認識jaiし、エラーが表示されます。

于 2013-09-14T18:46:37.103 に答える