0

KSH - HP-SOL-Lin 需要是 POSIX

我想测试多个条件是否为真,然后做点什么。

假设:

  • FIELDS=0
  • $STRING=''或者$STRING=' '

现在我有:

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

这很好用,如果$STRING为空,但有时它只有一个空格。我怎样才能$STRING先处理这两个测试?从概念上讲,我想相当于:

[[ $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 回答