2016-12-17 15 views
1

小さなkornスクリプトを書きましたが、スクリプトを実行しようとすると、表示したいメッセージがエコーされません。Korn条件演算子が動作しない

ksh script.sh -1 

メッセージをエコーし​​ていません。バッシュ/ kshの$#

if [ $# -le 0 ] 
    then 
     echo "That is a negative integer!" 
    exit 
fi 
+0

によってサポートされていない可能性はない、それはbashやkshのですか?それらは2つの異なる言語です! –

+0

おっと、私はコーンシェルを意味しました。私は今それを編集します。 – user3807468

+0

引数の数はどのように負になりますか? – karakfa

答えて

2

パラメータとして渡された引数の数を表します。 何が必要なことは

if [ ${1:-0} -lt 0 ] # $1 is the first parameter 
    then 
     echo "That is a negative integer!" 
    exit 
fi 

または上記

[ ${1:-0} -lt 0 ] && echo "That is a negative integer!" && exit 

の短絡版で編集1

  • 私はシェル[ parameter expansion ]${1:-0}を使用しているデフォルト値を提供します。ゼロ以来
  • を使用すると、特定の文字列に一致するように楽しみにしている場合は、その後

    [ ${1:-NULL} = "StringToMatch" ] && DoSomething 
    
    の下に行う-lt

編集2

-leを交換、技術的には負の数ではありません

出力にちょうど少なくとも1つの非数字の文字があるかどうかを調べるには、次のようなものを入力してください。

[[ {1:-NULL} =~ [^[:digit:]]+ ]] && DoSomething 

警告:リンクに記載されたすべての拡張がksh

+0

ありがとう、あなたの答えを選択します、魅力のように動作します! – user3807468

+0

@ user3807468:私は編集しました。見てください:) – sjsam

+0

すぐに質問します。入力が文字列かどうかを今検出しようとしています。どうすればいい?私はそれを見ようとしており、それについて何も見つけることができません。私はこれを書こうとしましたが、何かを入力するとそれは拒否されます。 'コード' [$ 1!=^[0-9]] – user3807468