和其他语言的eval功能差不多,都是将一个保存执行语句的变量作为参数,eval会让变量所保存的语句执行。

  下面是一个执行表单提交的命令:注意,这里只是示例,应用中不要这么使用,很危险

#!/bin/bash
#index.cgi echo "Content-Type:text/html;charset=utf-8"
echo cat << AAA
<html>
<head>
<title>run shell</title>
</head>
<body>
<form method="post">
请输入要执行的shell命令:<input type="text" name="code">
<input type="submit" value="run">
</form>
<pre>
AAA
if [ $REQUEST_METHOD = "POST" ];then
#使用cat或者tee接受post的方法
#query_string=`cat`
query_string=`tee`
code=`echo $query_string | sed 's/=/ /g' | awk '{print $2}' | sed 's/+/ /g'`
echo "您输入的命令是 "$code
eval $code
fi
cat << AAA
</pre>
</body>
</html>
AAA

  尝试提交命令 ls -la,运行结果如下:

shell脚本--eval执行shell命令的更多相关文章

  1. shell脚本中执行source命令不生效的解决办法

    一个shell脚本文件中有一个source命令,使用bash a.sh命令执行后source命令进行验证没有生效. 这是因为在shell脚本中执行source会看到效果,但是shell脚本执行完后再次 ...

  2. shell脚本中执行sql命令

    1.mysql 数据库表信息 2.shell脚本(a.sh)信息 #!/bin/sh mysql -u root << myInsert insert into test.t values ...

  3. 在shell脚本里执行sudo 命令

      可以 : echo "yourpasswd" |sudo -S yourcommand 但是不安全,因为密码都显示在shell脚本里面了-_- 引自http://hi.baid ...

  4. shell 脚本下执行Mongodb命令

    最近项目中搭建了两台mongodb的服务器,由于服务器只有两台的情况下,目前只是搭建了主从模式架构(官方目前并不推荐主从模式),缺点就是故障转移不变等等原因,而是推荐副本集模式(这里就不多说了)... ...

  5. shell脚本-批量执行机器命令

    场景:通过跳板机,批量获取线上机器日志 使用方式:run2 host 'ls -al /home/admin/' #! /bin/sh USER_NAME=$USER if [ $# -ne 2 ]; ...

  6. shell脚本中执行mysql命令

    1.mysql -hhostname -uuser -ppsword -e "mysql_cmd" 2. mysql -hhostname -uuser -ppsword < ...

  7. 在shell脚本中执行shell脚本

    任务下发 主节点脚本 任务管控脚本 [root@admin1 ~]# cat mytest.sh echo lovecode [root@admin1 ~]# cat myfor.sh #!/bin/ ...

  8. shell脚本中执行shell脚本(2)

    (a.sh)读取用户输入参数,并在脚本(b.sh)中使用 1.a.sh #!/bin/sh read -p "please input name value: " name ./b ...

  9. shell脚本中执行shell脚本

    1.a.sh #!/bin/sh name="hello" ./b.sh $name  2.b.sh(这里把b.sh与a.sh放在同一目录下,便于演示) #!/bin/sh ech ...

随机推荐

  1. 使用蒲公英路由器 X3 设置为网络中继器

    由于我的路由器放的时间比较久没有用了,所以先让路由器来个升级.链接图如下: 在浏览器地址栏中输入  oraybox.com,系统会自动跳到 https://pgybox.oray.com/passpo ...

  2. 【PAT】 B1006 换个格式输出整数

    超简单题 //直接将各位分开,分别用for循环输出 #include<stdio.h> int main(){ int num; scanf("%d",&num ...

  3. 虚拟机备份,部署VDP

    VDP是一个基于磁盘的备份和恢复解决方案,可靠且易于部署.VDP这一经过更新的备份设备完全取代了VMware原有的备份架构.而且VDP与VMware vCenter Server 完全集成,可以对备份 ...

  4. 转:Java中的String,StringBuilder,StringBuffer三者的区别

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  5. 《Java大学教程》—第15章 异常

    自测题:1.    什么是异常?P357异常是在程序生命周期内出现的事件,它会导致程序行为不可靠. 2. 已检查异常和未检查异常的区别是什么?P359在编译器允许程序被编译通过前,要求程序员必须编写代 ...

  6. 【teradata】强制解锁

    使用加锁用户释放锁,也可以用其它用户使用如下语句强制解锁 Release lock (pdm_data ),Override

  7. P3399 丝绸之路 dp

    题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...

  8. 有时间研究一下Maven打包插件细节

    Maven工作分为多个阶段,具体阶段参考:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html ...

  9. web基础之http

    目录 1.Http协议介绍 Http工作原理 http的请求方法 http的响应响应状态码 状态码的类别 常用HTTP状态码简要介绍 用户访问网站携带的参数,以及服务端返回的参数 (http请求报文 ...

  10. TFT2.2

    https://cdn-learn.adafruit.com/downloads/pdf/2-2-tft-display.pdf