已阅读:12,467 次
Linux脚本中使用管道为shell命令自动输入参数
ian | Linux | 2011/02/26


         Meego的开发环境现在还是只能在Linux下进行,而每次要启动模拟器都得输入一大堆指令,实在是太麻烦了,于是想到自己写一个启动脚本不就好了么,但是写shell的时候却遇到一些问题:

         1. 有些指令需要管理员权限,即sudo指令执行时需要输入管理员密码,我希望能在脚本中自动执行,即让脚本为我们自动输入密码;

         2. 模拟器是另一个shell环境了,就跟SQL一样,执行mysql -u root -p进入SQL之后,将”show databases “这种指令直接写到脚本中是不会执行的,因为这个时候终端的解释权限已经转移,那么,怎么把这时的指令自动写入到类似SQL的命令终端里呢?

          对于这两个问题,有一个比较简单的解决方案,那就是管道。

          管道其实是一种重定向技术,Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

         现在,我们先来看看如何使用管道来为我们自动输入密码:

         echo 123456 | sudo -S command

         这里有两条指令,前面一条是输出123456(假设这就是你的密码),而后面的指令就是取得管理员权限,它会提示你输入密码。这里由于采用管道提示符,自动的将前面的密码输入给第二条指令,所以现在你就自动完成了密码的输入任务啦。用这种方式虽然密码是明文存在脚本中,不太安全,但是胜在方法简单。

         然后,对第二种情况,同样采用管道命令:

         echo ‘show database’ | mysql -u root -p ***

        这里就自动的将show database输入到进入SQL后的新的命令提示符后面,这条命令现在是可以自动执行了的。

原创文章,转载请注明:转载自ian的个人博客[http://www.icodelogic.com]
本文链接地址: http://www.icodelogic.com/?p=33

tags:

没有评论

发表评论

你需要先 登录 才能回复