问两个shell细节问题,哪位大侠帮回答一下。

1、用点的方式运行脚本,如:./test  
  现在问题是如果运行的脚本写全路径好像系统找不到脚本位置,如当前在/home/目录中,使用./home/mydirect/test 系统提示找不到文件,难道非要我在脚本里切换当前工作目录???


2、如果一个字符串中有一个变量MYVAR。整个变量为"abcd$MYVARefgh",问题是这个样写shell不知道变量名在哪里结束吧?那要怎么写?写成 abcd"$MYVAR"efgh 这样么?shell怎么识别一个变量名得结束的?

作者: zzybird   发布时间: 2011-04-19

如当前在/home/目录中,使用./home/mydirect/test 系统提示找不到文件,难道非要我在脚本里切换当前工作目录???
---------------------
你的理解错误 ./test 这是执行当前目录下的test ./是当前目录的意思
而你说的全目录也就是绝对路径 一定是从/开始的 所以你的命令应该是
/home/mydirect/test

你说前在/home/目录中,使用./home/mydirect/test 那你其实执行的是/home/home/mydirect/test 知道吗?
所如如果现在要用相对路径的话 应该是./mydirect/test 因为你已经在/home下了

如果你在根目录/下执行./home/mydirect/test是没问题的 因为home就是在/下


2、如果一个字符串中有一个变量MYVAR。整个变量为"abcd$MYVARefgh",问题是这个样写shell不知道变量名在哪里结束吧?那要怎么写?写成 abcd"$MYVAR"efgh 这样么?shell怎么识别一个变量名得结束的?
-----------------------
其实你怀疑是毫无意义的 如果给你2个变量$MYVARefgh和$MYVAR 让你分辨 你如何分辨???

这种情况推荐你标准的写法 ${MYVAR} 即"abcd${MYVAR}efgh" 当然你自己的解决方法也是毫无问题的

作者: steptodream   发布时间: 2011-04-19

1 .表示当前目录 ./表示当前目录下的文件
2 abcd${MYVAR}efgh

作者: lgxwqq111   发布时间: 2011-04-19