2014-12-18 358 views
-1

我有疑問。當我聲明一個值並賦值給某個變量時,我不知道如何將相同的值重新賦值給另一個變量。請參閱下面的代碼片段。shell腳本 - 將一個變量分配給另一個變量

#/bin/sh  
#declare ARG1 to a 
a=ARG1 
#declaring $a to ARG2  
ARG2=$`$a` 

echo "ARG 2 = $ARG2" 

應該顯示我的輸出

ARG 2 = ARG1 

幫我出這一點。


這是我的實際腳本。

#!/bin/sh 

a=AA 
b=BB 
c=CC 
d=DD 
e=EE 
f=FF 

alpha_array=(a b c d e f) 
process_array=(proc1 proc2 proc3 proc4) 
array_1=("") 
array_2=("") 

display_array() { 
echo "array1 = ${array_1[@]}" 
echo "array2 = ${array_2[@]}" 
} 

checkarg() { 
if [[ " ${alpha_array[*]} " == *" $token "* ]]; then 
    echo "alphabet contains $token " 
    array_1=("${array_1[@]}" "$token") 
    $token=${$token} 
    echo "TOKEN = $token" 
elif [[ " ${process_array[*]} " == *" $token "* ]]; then 
    echo "process contains $token " 
    array_2=("${array_2[@]}" "$token") 
else 
echo "no matches found" 
display_array 
exit 1 
fi 
} 

for token in [email protected] 
do 
    echo $token 
    checkarg 
done 

display_array 

在這裏,下面兩行

$token=${$token} 
echo "TOKEN = $token" 

應該顯示我的輸出

TOKEN = AA 
TOKEN = BB 

當我用下面的參數運行我的腳本。

./build.sh a b proc1 

請在這兩行上幫助我。

+0

我編輯了標題,因爲這個問題似乎與聲明變量沒有任何關係。 (變量_can_在shell中聲明,但這對於顯式設置類型或範圍元數據是必要的,而不是分配值)。 – 2014-12-18 23:02:10

回答

1

要分配與變量arg2給變量a關聯的值,則需要簡單地運行dest=$source

a=ARG1 
arg2=$a 
echo "ARG 2 = $arg2" 

本地shell變量使用小寫的變量名是慣例,而不是必然性 - - 但這樣做的好處是避免與環境變量和內置函數的衝突,兩者都按照慣例使用全大寫字母。

+0

感謝您的回答。你做對了。即使我認爲這很簡單。但我在這裏張貼我的劇本。幫助我在這裏.. – Murthy 2014-12-18 23:21:44

+0

@NarayanamurthyBalasubramanian,我希望比較我對你的腳本做什麼就足以說清楚:改變分配ARG2到'ARG2 = $ a'的行 - 沒有額外的不必要的語法。如果這仍然不能回答你的問題,請澄清你需要知道的內容。 – 2014-12-18 23:29:20

+0

我改變了我的問題,並添加了幾個腳本行。幫我解決這個問題。 – Murthy 2014-12-18 23:31:48

相關問題