如何执行存储在变量中的命令? [英] How can I execute a command stored in a variable?
本文介绍了如何执行存储在变量中的命令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
调用存储在变量中的某些命令的正确方式是什么?
%1和%2之间有什么区别吗?
#!/bin/sh
cmd="ls -la $APPROOTDIR | grep exception"
#1
$cmd
#2
eval "$cmd"
推荐答案
Unix Shell在执行每行输入之前对它们进行一系列转换。对于大多数shell,它看起来像这样(取自Bash man page):
- 初始分词
- 花括号扩展
- 波浪号扩展
- 参数、变量、算术展开
- 命令替换
- 二级分词
- 路径扩展(也称为全局绑定)
- 删除引号
使用$cmd
会在参数扩展阶段将其直接替换为您的命令,然后进行以下所有转换。
使用eval "$cmd"
在引号删除阶段之前不执行任何操作,在此阶段$cmd
按原样返回,并作为参数传递给eval
,其功能是在执行之前再次运行整个链。
$ cmd="echo foo{bar,baz}"
$ $cmd
foo{bar,baz}
$ eval "$cmd"
foobar foobaz
这篇关于如何执行存储在变量中的命令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文