Chinaunix

标题: [问题]这个变量替换是怎么个过程? [打印本页]

作者: jinl    时间: 2008-02-07 20:52
标题: [问题]这个变量替换是怎么个过程?
目录下有如下的文件:
2008020201.dmp 2008020202.dmp 2008020203.dmp
想得到"20080202*.dmp"这样的值
如下处理:
TIME=`date +%Y%m%d`
得到了20080202
FILE_NAME=${TIME}"*.dmp"
echo $FILE_NAME
希望得到 20080202*.dmp
结果得到了 2008020201.dmp 2008020202.dmp 2008020203.dmp
如果改为 FILE_NAME=${TIME}*.dmp
那么结果是正确的。
想问一下,当后面的字符串中的*加了""后,是怎么会自动被替换的?
作者: dreammaker    时间: 2008-02-08 03:36
不会吧,你用的是什么shell?
作者: jinl    时间: 2008-02-08 10:44
环境: aix 5.2 + bash 3.00.16
今天重新测试的结果是:

  1. huang@F85_cz /home/huang/test>unset var1
  2. huang@F85_cz /home/huang/test>unset var2
  3. huang@F85_cz /home/huang/test>echo $var1

  4. huang@F85_cz /home/huang/test>echo $var2

  5. huang@F85_cz /home/huang/test>ls
  6. 2008020801.dmp  2008020802.dmp  2008020803.dmp
  7. huang@F85_cz /home/huang/test>var1=`date +%Y%m%d`
  8. huang@F85_cz /home/huang/test>echo $var1
  9. 20080208
  10. huang@F85_cz /home/huang/test>var2=${var1}*.dmp
  11. huang@F85_cz /home/huang/test>echo $var2
  12. 2008020801.dmp 2008020802.dmp 2008020803.dmp
  13. huang@F85_cz /home/huang/test>unset var2
  14. huang@F85_cz /home/huang/test>var2=${var1}"*.dmp"
  15. huang@F85_cz /home/huang/test>echo $var2
  16. 2008020801.dmp 2008020802.dmp 2008020803.dmp
  17. huang@F85_cz /home/huang/test>var2=${var1}'*.dmp'
  18. huang@F85_cz /home/huang/test>echo $var2
  19. 2008020801.dmp 2008020802.dmp 2008020803.dmp
  20. huang@F85_cz /home/huang/test>
复制代码


不管加不加 " "或者 '',都会自动扩展
作者: zhao3stones    时间: 2008-02-08 13:12
FILE_NAME=${TIME}"\*.dmp"
或者
FILE_NAME=${TIME}'*.dmp'
作者: jinl    时间: 2008-02-08 21:31
原帖由 zhao3stones 于 2008-2-8 13:12 发表
FILE_NAME=${TIME}"\*.dmp"
或者
FILE_NAME=${TIME}'*.dmp'

\*转义,结果是字符串里面多了个\
''上面一个帖子里,我已经列举了,没有作用
作者: jinl    时间: 2008-02-08 23:49
知道问题在哪儿了。
echoo "$var2"就得到需要的结果了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2