日期:2014-05-16  浏览次数:20674 次

Shell变量问题
本帖最后由 cloudeagle_bupt 于 2013-11-11 23:20:43 编辑
a.sh
#!/bin/bash

HIBENCH_HOME="/hadoop/intel-hadoop-HiBench-4aa2ffa"
JOBS_HOME="/hadoop/result/jobs"

./b.sh


b.sh

echo 1111
echo ${HIBENCH_HOME}
echo ${JOBS_HOME}


执行结果:

./a.sh

1111


不知道怎么回事,请达人指教下。

------解决方案--------------------
#!/bin/bash
 
export HIBENCH_HOME="/hadoop/intel-hadoop-HiBench-4aa2ffa"
export JOBS_HOME="/hadoop/result/jobs"
 
./b.sh


子进程可以访问父进程中的全局变量
------解决方案--------------------
关于Shell脚本变量传递
1 本地变量无法传递到子进程
2 环境变量对所有的子进程都有效
3 无论本地变量还是环境变量都无法向父进程传递参数
------解决方案--------------------
这个说一点吧,说完全了内容太多了,看个简单的例子

hadoop3@linux-240:~> cat aa.sh
name="x   y   z"
echo $name
echo "$name"
echo '$name'
hadoop3@linux-240:~> sh aa.sh
x y z
x   y   z
$name
hadoop3@linux-240:~> 

双引号 会屏蔽掉大部分的元字符,像\,`,$这几个字符在在双引号中有效
单引号 中所有的字符均无引用作用
楼主可以自己查下Linux的元字符和普通字符,还有IFS分隔符这些,都跟"" 单引号相关,内容太多啊