0

まず、私の質問があいまいだったり、不都合な形式だったりしたら申し訳ありません。これは私の最初の投稿です:D.

私の問題はtest.sh、入力を読み取り、それが正の整数であるかどうかを検証するスクリプトがあることです (この投稿から使用される正規表現: BASH: 文字列が整数として有効かどうかをテストしますか? ):

#!/bin/sh
echo -n " enter number <"
read num

if [[ $num =~ ^-?[0-9]+$ ]]     #if num contains any symbols/letters 
then                            # anywhere in the string
  echo "not a positive int"
  exit
else
  echo "positive int read"
fi

adb シェルを使用して Android デバイス (Xiaomi Mi3 w) でこのスクリプトを実行しています。エラー: 構文エラー:=~予期しない演算子が表示され続けます。

まず、私の正規表現は正しいですか? 第二に、この構文エラーを克服する方法についてのヒントはありますか?

4

3 に答える 3

1

Android のデフォルトのシェルはmksh. と 100% 互換性があるわけではありませんbashbashしたがって、すべてのレシピが変更なしで機能するとは思わないでください。

-がサポートする機能の説明については、mkshそのマニュアル ページを参照してください。

于 2015-07-02T23:44:07.907 に答える
0

これを機能させるには、以下に示すように ksh 式を使用する必要がありました。

case $num in
    +([0-9])*(.)*([0-9]) )
          # Variable positive integer
      echo "positive integer"
          ;;
    *) 
          # Not a positive integer
      echo "NOPE"
      exit
          ;;
esac
于 2015-07-06T15:45:55.193 に答える