隐藏回声保持变量bash

时间:2015-09-16 11:05:03

标签: bash variables echo

我想问你如何隐藏我的函数的回声,但仍然使用它的echo作为下一个处理的变量。

我的代码是:

function str_str {
local str
str="${1#*${2}}"
str="${str%%$3*}"
echo -n "$str"
}

mystr=$(cat /etc/logrotate.conf)
str_str "$mystr" "access.log" "}"

OKACCESS=$(str_str "$mystr" "access.log" "}" | grep -e "daily" -e "size" -e "rotate" -e "create" -e "weekly" -c)
echo $OKACCESS

当我删除:

echo -n "$str"

我不能将它用作OKACCESS的变量,它返回0,应该返回4(使用echo未隐藏或传递给dev> null)。

如何在不限制OKACCESS变量定义的情况下隐藏函数的输出?

感谢您的帮助。

E:

我想做什么:

当我执行当前脚本时,其输出为:

[root@env test]# ./tester.sh
{
        missingok
        daily
        rotate 10
        create 0664 jboss jboss
        postrotate
        /usr/bin/kill -s SIGHUP `cat /var/run/syslogd.pid`
        endscript
        dateext
4

当我删除“echo -n”$ str“”部分时,我得到了这个:

0

我需要这个:

4

1 个答案:

答案 0 :(得分:2)

这将隐藏第一个函数调用的输出:

str_str "$mystr" "access.log" "}" > /dev/null