shell 将变量当命令执行问题【多条命令同时执行问题】
2015-09-01 17:35
330 查看
shell将变量当命令执行问题【多条命令同时执行问题】
今天写了个shell脚本,脚本中需要将变量当做shell命令运行,通常的方法有多种,比如:
`${var}` 将变量内容当shell命令行执行
$(${var}) 将变量内容当shell命令执行
${var}将变量内容当shell命令执行【不推荐此种方法】
但是这3种方法只能运行单条命令,当命令是下面类型时就会有问题:
VAR1='cd /home ;echo "hello";echo "good"'
VAR2='cd /home && echo "hello" && echo "good"'
此时执行
$(${VAR1}) 就会发现没有输出,通过跟踪命令执行过程发现shell自动将 ; && 使用''进行了限制,为了解决这个问题查了很多资料,没有好的解决方法,
通常我们的crontab 命令会有此种写法,而且执行没有问题,通过查看crontab的资料,发现使用的system函数,所以最后使用awk的system函数解决问题。
解决方法:
VAR1='cd /home ;echo "hello";echo "good"'
VAR2='cd /home && echo "hello" && echo "good"'
echo ${VAR1}|awk '{run=$0;system(run)}'
echo ${VAR2}|awk '{run=$0;system(run)}'
执行结果正确
hello
good
hello
good
今天写了个shell脚本,脚本中需要将变量当做shell命令运行,通常的方法有多种,比如:
`${var}` 将变量内容当shell命令行执行
$(${var}) 将变量内容当shell命令执行
${var}将变量内容当shell命令执行【不推荐此种方法】
但是这3种方法只能运行单条命令,当命令是下面类型时就会有问题:
VAR1='cd /home ;echo "hello";echo "good"'
VAR2='cd /home && echo "hello" && echo "good"'
此时执行
$(${VAR1}) 就会发现没有输出,通过跟踪命令执行过程发现shell自动将 ; && 使用''进行了限制,为了解决这个问题查了很多资料,没有好的解决方法,
通常我们的crontab 命令会有此种写法,而且执行没有问题,通过查看crontab的资料,发现使用的system函数,所以最后使用awk的system函数解决问题。
解决方法:
VAR1='cd /home ;echo "hello";echo "good"'
VAR2='cd /home && echo "hello" && echo "good"'
echo ${VAR1}|awk '{run=$0;system(run)}'
echo ${VAR2}|awk '{run=$0;system(run)}'
执行结果正确
hello
good
hello
good
相关文章推荐
- Shell中的${}、##和%%使用范例
- Linux 下的shell
- /etc/profile /etc/profile .bash_profile .bashrc解释
- bash-completion linux tab自动补全增强
- Linux shell 交互式编程、TCL/TK 和 Expect 编译与安装、expect 编程
- 转帖-shell脚本$与if用法
- Hbase shell详情
- vim--find--bash---作业
- Linux:-bash: ***: command not found
- 【转载】HBase基本概念和hbase shell常用命令用法
- 已解决:登录Linux的 -bash-4.2$ 问题
- linux shell 编程 echo 语句 颜色
- 一个简单的shell脚本-----实现虚拟机实验环境的简单配置
- 一个简单的shell脚本-----实现虚拟机实验环境的简单配置
- 总结PowerShell的常用命令
- 数据输入/输出重定向
- linux C程序中获取shell脚本输出(如获取system命令输出)
- Android java代码中如何执行shell命令
- 让PowerShell2.0运行在.Net 4.0最简单的方法
- Bash笔记