if语句中的测试不会捕获空值

时间:2017-07-13 12:36:39

标签: bash

我已经用"&&"并试图反对""但是对于null值,每次它都没有向下移动到else语句。

#!/bin/bash
#find | grep
#find -a {} | grep {search}
function fg { 
        if [ -z $1 ] && [ -z $2 ]; then
        echo "Help: find {path} | grep {search} "

        else
        find $1 | grep $2

        fi 
}

fg

1 个答案:

答案 0 :(得分:1)

始终引用您的参数扩展。

fg () { 
  if [ -z "$1" ] && [ -z "$2" ]; then
    echo "Help: must specify path and regular expression"
  else
    find "$1" -regex "$2"
  fi
}

fg

但是,检查未设置或空参数的更简洁方法是通过:?运算符。

fg () {
    : ${1:?Missing path}
    : ${2:?Missing regex}
    find "$1" -regex "$2"
}