免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1286 | 回复: 2
打印 上一主题 下一主题

[系统管理] if then脚本的用法疑惑 [复制链接]

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-25 08:58 |只看该作者 |倒序浏览
1. 创建一个脚本/mnt/db.sh,满足以下要求
1)运行/mnt/db.sh  db1,输出”db2”
2)  运行/mnt/db.sh  db2,输出”db1”
3)其他运行条件下,均输出”It’s wrong”


脚本1执行后显示是正确的:
____________________________________
#!/bin/bash
if [ -z "$1" ]
then
    echo "It’s wrong"
elif [ $1 = db2 ]
then
    echo "db1"
elif [ $1 = db1 ]
then
    echo "db2"
else
    echo "It's wrong"
fi
______________________________________

脚本2:
__________________________________________________________________________
#!/bin/bash
if [ $1 = db1 ]
then
    echo "db2"
elif [ $1 = db2 ]
then
    echo "db1"
elif [  -z  “$1” ]
then
    echo "It's wrong"
else
    echo "It's wrong"
fi
________________________________________________________________
      
脚本2后面如果不跟参数,即$1为空时,错误显示如下:
[root@REDHAT mnt]# ./db.sh
./db.sh: line 2: [: =: unary operator expected
./db.sh: line 5: [: =: unary operator expected
It's wrong

脚本3:
__________________________________________________________________________
#!/bin/bash
if [ “$1” = db1 ]
then
    echo "db2"
elif [ “$1” = db2 ]
then
    echo "db1"
elif [  -z  “$1” ]
then
    echo "It's wrong"
else
    echo "It's wrong"
fi
____________________________________________________________________________

脚本3中当把$1全部打上双引号时,脚本执行是正确的。

我想问一下,我的脚本1的$1也有没打双引号的,为什么脚本1和脚本3是正确的,脚本2的语法有什么问题?



论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
2 [报告]
发表于 2016-04-25 09:06 |只看该作者
不带参数执行时, 脚本一第一个if 判断成功, 然后进去echo wrong结束, 第二个脚本执行if 时是 if [ = db1 ], 就报了  [: =: unary operator expected, 第三个脚本是 if [ "" = db1 ], 判断不成功

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
3 [报告]
发表于 2016-04-25 14:57 |只看该作者
谢谢elu_ligao 的耐心讲解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP