如何使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)时,它不会被视为其值.
删除单引号
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)
等等
使用变量间接引用,所以:
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的值,该值是我希望引用的变量的名称