在shell脚本中使用bash $ HOME

ido*_*obr 4 bash shell

如何使bash执行变量值.例如,我们有这个代码,其中变量值用单引号(!)设置.

#!/bin/bash
V_MY_PATH='$HOME'
echo "$V_MY_PATH"
ls $V_MY_PATH
Run Code Online (Sandbox Code Playgroud)

输出是

$HOME
ls: $HOME: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果有的话,如何使bash转换shell变量insto的值.

我想在V_MY_PATH ='$ HOME'之后添加一些代码来输出echo $ HOME.

这很简单,但我被卡住了.(注意:我知道使用V_MY_PATH ="$ HOME",它可以正常工作.)

编辑部分:我只是想简单,但我觉得需要一些细节.

我从文件中获取参数.这部分很好用.我不想重写它.问题是,当我的V_MY_PATH包含一个预定义的变量(如$ home)时,它不会被视为其值.

use*_*001 8

删除单引号

V_MY_PATH='$HOME'
Run Code Online (Sandbox Code Playgroud)

应该

V_MY_PATH=$HOME
Run Code Online (Sandbox Code Playgroud)

你想$HOME用作变量

你不能在单引号中有变量.

完整的脚本:

#!/bin/bash
V_MY_PATH=$HOME
echo "$V_MY_PATH" 
ls "$V_MY_PATH"  #; Add double quotes here in case you get weird filenames
Run Code Online (Sandbox Code Playgroud)

输出:

/home/myuser
0
05430142.pdf
4
aiSearchFramework-7_10_2007-v0.1.rar
Run Code Online (Sandbox Code Playgroud)

等等


pet*_*hes 6

使用变量间接引用,所以:

pete.mccabe@jackfrog$ p='HOME'
pete.mccabe@jackfrog$ echo $p
HOME
pete.mccabe@jackfrog$ ls ${p}
ls: cannot access HOME: No such file or directory
pete.mccabe@jackfrog$ ls ${!p}
bash                        libpng-1.2.44-1.el6      python-hwdata           squid
...
pete.mccabe@jackfrog$ 
Run Code Online (Sandbox Code Playgroud)

$ {!p}表示取$ p的值,该值是我希望引用的变量的名称