我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:
a="bbb"
$a="ccc"
Run Code Online (Sandbox Code Playgroud)
但它不起作用.完成这项工作的正确方法是什么?
我试图将“嵌套”变量的值获取到另一个变量中和/或直接使用该值,如下所示
下面是一个示例场景,它准确地解释了我陷入困境的地方
$ USER1_DIR=./user1/stuff
$ USER2_DIR=./user2/stuff
$ USER3_DIR=./user3/stuff
#User will be taken as input, for now assuming user is USER1
$ USER="USER1"
$ DIR=${USER}_DIR
$ echo $DIR
>> USER1_DIR
$ DIR=${${USER}_DIR}
>> -bash: ${${USER}_DIR}: bad substitution
Run Code Online (Sandbox Code Playgroud)
挑战一:
当输入为 USER1 时,获取 ./user1/stuff 的 DIR 值
或者
当输入为 USER1 时,获取 ./user1/stuff 作为输出
在完成挑战 1 后,我必须向用户目录中的文件添加一些内容,如下所示
期望的输出如下
$ echo "Some stuff of user1" >> $DIR/${DOC}$NO
# Lets say DOC="DOC1" and NO="-346"
# So the content has to be added to ./user1/stuff/DOC1-346
# Assume …Run Code Online (Sandbox Code Playgroud) 我想在bash中询问有关变量变量的一些帮助.我已经阅读了一些关于它的文章,但就我而言,我不知道该怎么做.让我看看我的问题:
该数组包含其他数组的名称,我想打印这些数组的值.在内心,我需要变量变量.
#!/bin/bash
declare -a array=(dir1 dir2 dir3)
declare -a dir1=(1 2 3)
declare -a dir2=(a b c)
declare -a dir3=(9 8 7)
for elem1 in "${array[@]}"
do
for elem2 in "${variableVariable[@]}"
do
echo "$elem1 : $elem2"
done
done
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的
dir1 : 1 dir1 : 2 dir1 : 3 dir2 : a dir2 : b dir2 : c dir3 : 9 dir3 : 8 dir3 : 7
这种替代有什么问题.
$ m_d_ver=0.2
$ m=mod
$ d=dom
$ echo ${$m_$d_ver}
-bash: ${$m_$d_ver}: bad substitution
Run Code Online (Sandbox Code Playgroud)
谢谢,