0

KSH - HP-SOL-Lin は POSIX である必要があります

複数の条件が真かどうかをテストしてから、何かをしたい。

仮定:

  • FIELDS=0
  • $STRING=''また$STRING=' '

今私は持っています:

if [[ $FIELDS -ne 0 && ! -z $STRING ]]; do

が null の場合、これは正常に機能$STRINGしますが、単一のスペースがある場合があります。$STRING最初に2つのテストを処理するにはどうすればよいですか? 概念的には、次のものと同等のものを希望します:

[[ $FIELDS -ne 0 && [ ! -z $STRING || $STRING = ' ' ]  ]]
4

3 に答える 3

1

テストを分離することができます:

if [[ $FIELDS -ne 0  ]]; then
  if [[ ! -z $STRING || $STRING == ' ' ]]; then
    do some stuff
  fi
fi
于 2012-09-20T20:09:17.250 に答える
1

POSIX準拠の場合、

if [ "$FIELDS" -ne 0 -a  ( ! -z "$STRING" -o "$STRING" = " " ) ]; then
...
fi
于 2012-09-22T04:12:00.063 に答える
0

$STRING は単一のスペースである可能性があることを念頭に置いて、設定されている値 (null とスペースの間) は無関係であると想定しています。その場合、簡単な方法は、最初に $STRING で簡単なチェックを実行することです。

if [[ $STRING == ' ' ]]
then
    export STRING=''
fi

if [[ $FIELDS -ne 0 && ! -z $STRING ]]; do

読みやすさが向上し、後続のコマンドに対して同じ追加のテストを実行する必要がなくなります。

私の仮定が間違っている場合は、遠慮なく私をいたずらなステップに送ってください。

于 2012-09-20T20:01:08.493 に答える