在Bash中将一个变量分配给另一个变量?

时间:2014-12-18 22:56:56

标签: linux 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 $@
do
   echo $token
   checkarg
done

display_array

这里有以下两行

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

应将我的输出显示为

TOKEN = AA
TOKEN = BB 

当我用以下参数运行我的脚本时。

./build.sh a b proc1

请帮助我完成这两行。

2 个答案:

答案 0 :(得分:4)

要将与变量arg2相关联的值分配给变量a,您只需运行dest=$source

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

对于本地shell变量使用小写变量名是按惯例,而不是必需 - 但这样做的好处是可以避免与环境变量和内置函数冲突,这两者都按照惯例使用全大写的名称。 p>

答案 1 :(得分:0)

我知道这很老了,但是在bash中分配时遇到了另一种问题:

空白。

我不知道这是被禁止的,所以我尝试做ARG2 = $ARG1,但那是行不通的。

bash只会说:

./my-script: line 2: ARG2: command not found

我有一段时间感到难过,但后来我注意到脚本中其他位置的相同分配工作正常。唯一的区别是:

空白。

将其更改为ARG2=$ARG1可以修复它,我不再感到难过。

以为我应该分享这一点,以防其他人感到难过。