在shell脚本中使用bash $ HOME

时间:2013-01-28 11:54:28

标签: bash shell

如何使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)时,它不会被视为它的值。

4 个答案:

答案 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)

  1. 您可以使用单引号或双引号,如果需要,可以使用单引号。

  2. 您什么都没有告诉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”