shell 随记

<一>    eval带例子详解:
  a=b;varname=a;cmd=`echo 'if [ -n "\$'${varname}'" ]; then
   touch b;else touch a;
fi'`;eval "$cmd"     //执行touch b

调试模式看具体执行 //sh -x b
+ a=b                //shell执行a=b
+ varname=a            //varname=a
++ echo 'if [ -n "$a" ]; then    //子shell执行echo命令,因为``的缘故
   touch c;else touch a;
fi'
+ cmd='if [ -n "$a" ]; then    //echo结果赋给cmd
   touch c;else touch a;
fi'
+ eval 'if [ -n "$a" ]; then    //eval cmd变量值
   touch c;else touch a;
fi'
++ '[' -n b ']'            //将$a解析,调用子进程执行判断语句
++ touch c            //子进程


<二> if -n 选项奇葩的输出
if [ -n ]; then echo strange; else echo right; fi //输出strange
if [ -n '' ]; then echo strange; else echo right; fi //输出right
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值