是否有一个选项或其他东西可用于封装echo语句,以便在行为空时不打印?
我在想这样的事情:
myecho(str){
if [[ -z str ]]; then
echo str
fi
}
但我无法找到如何传递参数。
答案 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