2012-11-14 33 views
1

我已經使用bash腳本編寫的 'to_upper' 功能:意外的bash函數輸出

to_upper() { 

    local string=$1 
    echo $string | tr "[:lower:]" "[:upper:]" 
    return 0 
} 

然而,輸出:

VAL=bla 
echo $(to_upper bla) 
echo $(to_upper $VAL) 

BLA 
1 

有誰知道這裏發生了什麼?

注意:看來我的例子不會重現我的錯誤。不過,我確實有就是這種情況:

DEVICE_STATUS=$(get_device_status) 
echo $DEVICE_STATUS $(to_upper $DEVICE_STATUS) 

的輸出是:

active 1 

我的例子似乎沒有重現該問題,但它的存在在我的腳本。

注2:我固定的問題;它是get_device_status函數上的一些grep輸出,最終以$DEVICE_STATUS結尾。

+1

無法重現。 Bash 4.2.24。 – atzz

+0

也不能在我的bash 4.1.5中重現。 – dimir

+0

既不在我的bash中,GNU bash,版本4.2.37(2)-release(x86_64-unknown-linux-gnu) – user237419

回答

1

我解決了我自己的問題:在get_device_status函數中有一個grep命令,它將垃圾輸出到$DEVICE_STATUS。將grep輸出重定向到/dev/null解決了該問題。

我不是在這種情況下明白爲什麼$DEVICE_STATUS拿起正確的值在echo但不能調用to_upper