2014-12-18 346 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

相关问题