bash脚本 - 仅当不为空时才回显

时间:2015-03-15 18:57:53

标签: bash echo newline

是否有一个选项或其他东西可用于封装echo语句,以便在行为空时不打印?

我在想这样的事情:

myecho(str){
  if [[ -z str ]]; then
    echo str
  fi
}

但我无法找到如何传递参数。

5 个答案:

答案 0 :(得分:3)

函数的参数像脚本的参数一样传递。从$1开始直到$n

myecho(){
    if [ -n "$1" ] ; then
        echo "$@"
    fi
}

myecho ""
myecho "foo"

在测试中使用-n可以验证字符串是否为空。详细了解bash中的函数:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-8.html

答案 1 :(得分:1)

function echo2() {
   if [ -n "$1" ]
   then
      echo "$1"
   fi
}

答案 2 :(得分:1)

那呢?

[ -n "${STRING}" ] && echo ${STRING}

或补充版本:

[ -z "${STRING}" ] || echo ${STRING}

或者您可以做一些“回音魔术”:

echo -en "Some prependig text before the empty string: \""
echo -n "${STRING}"
echo -e "\" and some postfix text..."

答案 3 :(得分:0)

如果${str}\n不为null或未设置,则从man bash(Shell参数扩展)回显str

echo -n ${str:+$str\n} # ${str+$str\n} also works

答案 4 :(得分:-4)

这应该有效:

echo. 

or

echo. SOMEVARIABLE_WHICH_WILL_NOT_OUTPUT_IF_EMPTY