摘要: eval的用法eval command-line 其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。如: pipe="|" eval ls $pipe wc -l shell第1次扫描命令行时,它替换出pipe的值|,接着eval使它再次扫描命令行,这时shell把|作为管道符号了。看下面脚本#!/bin/sh#eval1.shv1="aaa"v2="bbb"c="1"if [ $c -eq 1 ]then vname=v$c e 阅读全文
posted @ 2013-07-11 17:35 cav5lier 阅读(260) 评论(0) 推荐(0) 编辑
摘要: trap命令用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。不过,这次我遇到它,是因为客户有个需求:从终端访问服务器的用户,其登陆服务器后会自动运行某个命令,例如打开应用(命令写在.bashrc等文件中),最后退出,并断开连接;期间是不能允许其使用Ctrl+C等中断退出应用,而回到Shell环境,否则可能会带来安全问题。当然,解决的方式有很多,如在应用中屏蔽中断信号、使用chroot方式访问等。但这些方法都有一些限制,如需要修改应用,让telnet等支持chroot方式(ssh可支持chroot)等。而使用trap也是一种比较好的解决方法。一、关于信号历史上, 阅读全文
posted @ 2013-07-11 11:52 cav5lier 阅读(1180) 评论(0) 推荐(1) 编辑