+ -
当前位置:首页 → 问答吧 → 求助!

求助!

时间:2011-05-21

来源:互联网

请教个问题 在脚本里:

#!/bin/bash
test="echo "abcd" > kkkkkk.log"
$test

运行这个脚本,为什么不能产生kkkkkk.log 呢?

我在脚本里,直接echo "abcd" > kkkkkk.log 可以产生的

请问有什么办法呢?

bash-3.00$ sh -x test.sh
test=echo abcd > kkkkkk.log
+ echo abcd > kkkkkk.log
abcd > kkkkkk.log

作者: jiangyijun   发布时间: 2011-05-21

刚学?
test是个变量!!!
1. 把test定义成函数:
  1. #!/bin/bash
  2. test()
  3. {
  4.     echo "abcd" > kkkkkk.log
  5. }
  6. test
复制代码
2. eval变量:
  1. #!/bin/bash
  2. test="echo \"abcd\" > kkkkkk.log"
  3. eval $test
复制代码

作者: xiaopan3322   发布时间: 2011-05-21

回复 xiaopan3322


   太谢谢了  没用过 eval这个 呵呵 问题解决了

作者: jiangyijun   发布时间: 2011-05-21

正常情况下定义成funtion就行了。

作者: zooyo   发布时间: 2011-05-21

回复 zooyo


    我是把命令放在配置文件里,读取出来运行 就会出现有些命令不能运行 用eval就可以了

作者: jiangyijun   发布时间: 2011-05-21

回复 jiangyijun


    噢是这样,命令行保存成变量,需要的时候就可以eval 变量运行命令了。

作者: zooyo   发布时间: 2011-05-21