2013-10-21 73 views
1

因此,我有一個函數,要求用戶輸入一些內容,然後使用eval將輸入的值賦給傳入的變量名稱。如何確定在bash中傳入函數的變量的值?

eval "$1='$input'" 

但我想,以檢查是否$1是空的,因爲如果不是我不想再爲它分配一個值。這個函數被多次調用,所以如果我可以在每次調用時不添加檢查的情況下添加一些檢查,那最好。

我試圖

if [[ ! -z "$1" ]]; then 
    return 
fi 

但變量$1計算爲我傳遞給它的變量名。

I.e. _function_call VAR_A < - 如果在函數中進行了評估,此調用將導致$1VAR_A

那麼,有沒有什麼辦法可以確定變量的值,或者只是檢查它是否在函數中爲空?該函數不是從另一個函數調用的。

+1

你可以用'聲明-g 「$ 1 = $輸入」',而不是EVAL。它有點安全,並且更容易閱讀。 – rici

回答

2

使用bash間接首先得到他的名字被存儲在$1變量:

var1=${!1} 

# then 
if [[ ! -z "$var1" ]]; then 
    exit 1 
fi 
相關問題