2015-09-16 159 views
-1

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

我的代码是:

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(回声不工作隐藏或传递给dev> null)。

如何隐藏函数的输出而不限制OKACCESS变量的定义?

谢谢你的帮助。

E:

我所试图做的事:

当我执行我的当前脚本,它的输出是:

[[email protected] 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 

当我删除了 “回声-n” $海峡“” 的一部分,我得到这个:

0 

,我需要这样的:

4 
+0

我很抱歉,但它不是完全清楚你想要什么来完成,并且你是有问题的一部分用。你可以请[编辑]你的问题来解释你想要做什么? – tripleee

+0

完成:)我希望这有助于。 –

+0

你有复制/粘贴这些代码而不理解它是什么吗?如果你的函数没有产生任何输出,'grep'不会找到任何命中。 – tripleee

回答

2

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

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

...但是为什么不把注释掉的函数调用一下。 – tripleee

+0

@tripleee:一个公平的问题。我选择假设它是因为真正的代码在该函数中有一些副作用。但谁知道! –