2015-08-18 69 views
0

有沒有辦法在將命令輸出到另一個方法之前修改它的輸出?在將一個方法的輸出發送到另一個方法之前,先傳遞並修改其輸出

例如:

print_log_message() 
{ 
    echo "A descriptive log message" 
} 

print_error_message() 
{ 
    echo "A descriptive error message" 
} 

log() 
{ 
    logger -s $1 
} 

我想的消息格式要記錄: 「日誌信息:一個描述性的日誌信息」

然而前綴「日誌信息:」可改變。

print_log_message > log "Log message: ${log_output}" 

print_error_message > log "Error message: ${error_output}" 

回答

3

不知道這會真的回答你的問題,但我最近有類似的問題。我不知道'>'重定向,但我可以提供兩種可能性。使用

第一管道(「|」):

log(){ 
    while read msg 
    do 
    echo "$1: $msg" 
    done 
} 

echo "all is fine" | log "Log message" 
# Log message: all is fine 
echo "drama!" | log "Error message" 
# Error message: drama! 

但我不知道爲什麼你需要使用標準輸入,也許這是強制性的嗎?如果不是的話,我想你會是隻使用功能的更好的解決方案,因爲這樣的:

log(){ 
    echo "${2:-Log message}: ${1:-}" 
} 

log "all is fine" 
# Log message: all is fine 
log "drama!" "Error message" 
# Error message: drama! 

當然,你可以把它與其他功能更富有表現力上頂:

error(){ 
    log "${1:-}" "Error message" 
} 

log "all is fine" 
# Log message: all is fine 
error "drama!" 
# Error message: drama! 

希望這可以幫助。如果你真的需要重定向('>')讓我知道,我會深入挖掘。

相關問題