- 论坛徽章:
- 0
|
5可用积分
操作系统: Suse linux
语言:bash
场景:
我会从文件中读取一条字符串,这条字符串是用户配置的命令行, 命令行中可能包含环境变量,命令,参数,转义,管道,重定向等特殊符号;
我现在要做的是把这条字符串中的变量替换成值, 而其它的值保留下来, 转换后的字符串去送给bash执行;
当前我尝试过用eval解析, 但是eval完成变量转换之后遇到管道,就真当做管道来执行了,, 请问各位有什么好的办法?
例如下面代码, cmd_str分别是从配置文件中读取出来的命令行, 需要对里面的变量转换成执行,再送给bash执行- vBackupHome=/export/home/sysm/backup
- vLogFile=/export/home/sysm/logs/a.log
- cmd_str='find ${vBackupHome}/data/common/datafile -maxdepth 2 -type d | xargs -i chmod 700 {}'
- echo "${cmd_str}" | bash
- cmd_str='find ${vBackupHome}/data/common/datafile -maxdepth 2 -type d -exec chmod 700 {} \;'
- echo "${cmd_str}" | bash
- cmd_str='find ${vBackupHome}/data/common/datafile -maxdepth 2 -type d >> ${vLogFile}'
- echo "${cmd_str}" | bash
复制代码 |
最佳答案
查看完整内容
回复 4# legone2008 1、 eval echo \"$cmd_str\"2、 eval $cmd_str
|