2015-09-16 91 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:一個公平的問題。我選擇假設它是因爲真正的代碼在該函數中有一些副作用。但誰知道! –