如何使bash执行变量值。 例如,我们有这个代码,其中变量值设置为单引号(!)。
#!/bin/bash
V_MY_PATH='$HOME'
echo "$V_MY_PATH"
ls $V_MY_PATH
输出
$HOME
ls: $HOME: No such file or directory
如果存在一些变量,如何使bash将shell变量insto转换为其值。
我想在V_MY_PATH =' $ HOME'之后添加一些代码。输出像echo $ HOME。
这很简单,但我被困住了。 (注意:我知道,使用V_MY_PATH =" $ HOME",它可以正常工作。)
编辑部分: 我只是想简单一点,但我觉得需要一些细节。
我从文件中获取参数。这部分很好用。我不想反驳它。 问题是,当我的V_MY_PATH包含一个预定义的变量(比如$ home)时,它不会被视为它的值。
答案 0 :(得分:8)
删除单引号
V_MY_PATH='$HOME'
应该是
V_MY_PATH=$HOME
您想将$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
输出:
/home/myuser
0
05430142.pdf
4
aiSearchFramework-7_10_2007-v0.1.rar
等
答案 1 :(得分: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$
$ {!p}表示取值$ p,该值是我希望引用的变量的名称
答案 2 :(得分:1)
使用 eval 命令:
#!/bin/bash
V_MY_PATH='$HOME'
echo "$V_MY_PATH"
eval ls $V_MY_PATH
答案 3 :(得分:0)
您可以使用单引号或双引号,如果需要,可以使用单引号。
您什么都没有告诉bash变量等于什么。也许是这样的吗? (除非我误解了您要做什么)
================================================ ======================
#!/bin/bash
#########################
# VARIABLES #
#########################
V_MY_PATH=home
#########################
# SCRIPT #
#########################
echo "What is your home path?"
read $home
echo "Your home path is $V_MY_PATH"
ls $V_MY_PATH
当然,您也可以只删除顶部的变量并使用: 回声“您的家庭路径是$ home”