linux shell的if语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell的if语句相关的知识,希望对你有一定的参考价值。

现在我有一道编程题,写在shell里面,内容如下
当我运行该shell文件时,提示“你继续吗?Y or N”
等待我输入,当我输入Y或y时,输出“你选择了或y”,
当我输入N或n时,输出“你选择了N或n”,
当我输入其他的时候,输出 “输入错误”
使用if elif else语句
以下就是我编写的shell
echo "你继续吗?Y or N"
read ANSWER
if [ $ANSWER = 'Y' -o $ANSWER = 'y' ] ; then
echo "你选择了$ANSWER";
elif [ $ANSWER = 'N' -o $ANSWER = 'n' ] ; then
echo "你选择了$ANSWER";
else
echo "输入错误"
exit
fi
我运行该shell文件时,提示我需要输入,而我随便填写一个(Y、N、y、n、或其他)字母回车,输出的并不是我想要的,提示编码有问题,请问上面的代码错在哪里(还是用if elif else语句情况下),请给一个正确的我
第三行的 输出“你选择了或y”,改为 输出“你选择了Y或y”,

echo "你继续吗?Y or N"
read ANSWER
if [ “$ANSWER” = “Y” -o “$ANSWER” = “y” ] ; then
echo "你选择了$ANSWER";
elif [ “$ANSWER” = “N” -o “$ANSWER” = “n” ] ; then
echo "你选择了$ANSWER";
else
echo "输入错误"
exit
fi
-----你试试
参考技术A #/bin/bash
read -p "你继续吗?Y or N:" ANSWER

if [ "$ANSWER" = "Y" -o "$ANSWER" = "y" ] ; then
echo "你选择了 $ANSWER"; #如果要显示为你选择了Y或y则改为 echo "你选择了Y或y"
elif [ "$ANSWER" = "N" -o "$ANSWER" = "n" ] ; then
echo "你选择了$ANSWER"; #如果要显示为你选择了N或n则改为 echo "你选择了N或n"
else
echo "输入错误"
exit
fi追问

这个我试过,还是出现错误

参考技术B 脚本没有问题,应该是你用的默认shell问题,用sh或bash运行一下试试,在脚本第一行加上
#!/bin/sh追问

修改了还是一样

参考技术C read -p "你继续吗?(y/n):" yn
if [ $yn == Y -o $yn == y ]; then
echo "你选择了$yn!"
elif [ $yn == N -o $yn == n ]; then
echo "你选择了$yn!"
else
echo "输入错误"
exit 1
fi

主要是注意一下read的用法

linux shell编程之if语句

-eq 等于

-ne 不等于 

-gt 大于

-lt 小于

-le 小于或等于

-ge 大于或等于

-z 空串

= 两个字符相等

!= 两个字符不相等

-n 非空串

字符串通常用来检查用户输入,系统环境是否满足条件,在提供交互式操作的shell脚本中也可以判断用户输入位置参数是否符合要求,字符串的常用操作如下:


文档比较运算符:

-e filename  假如filenanme存在,则为真  

-d filename  假如filename为目录,则为真

-f filename 假如filename为常规文档,则为真

-L filename 假如filename为符号链接,则为真

-r filename 假如filename可读,则为真

-w filename 假如filename可写,则为真

-x filename 假如filename可执行,则为真


if 语句是循环语句中一种又称为控制语句,通过制定条件进行判断执行,只有条件成立的时候才会执行相应的代码,否则不会执行任何操作。


*单分支if语句格式:

if 条件测试操作

then

    命令序列

fi


例子1

vim a.txt

#!/bin/bash

if

    [ ! -d /media/cdrom ]

thenk

    mkdir -p /media/cdrom

fi

wq!

sh -x a.txt        x选项为查看调试过程


例子2

vim b.txt

#!/bin/bash

NUM=100

if (($NUM > 4));then

echo "this num is $NUM greater 4!"

fi

wq!

sh -x b.txt



*双分支if语句格式:

双分支的选择结果,要求针对条件成立,条件不成立两种情况分别执行不同的操作

语法结构

if 条件测试操作

then ( 条件成立执行)

    命令序列1

else(否则,条件不成立,则执行)

    命令序列2

fi


例子3

vim c.txt

#!/bin/bash

ping -c 3 -i 0.2 -w 3 $1

if

    [ $? -eq 0 ]

then

    echo "ip is up"

else

    echo "ip is down"

fi

sh -x c.txt 172.0.0.1


例子4

vim b.txt

#!/bin/bash

word=$1

grep ^$1$" /usr/share/dict/words -q 

    if [ $? -eq 0 ];then

        echo "word is a dictionary word"

else

        echo "word is not a dictionary word"

fi



本文出自 “Oracle个人学习笔记” 博客,请务必保留此出处http://wuchunqiang.blog.51cto.com/1022331/1853496

以上是关于linux shell的if语句的主要内容,如果未能解决你的问题,请参考以下文章

shell中if语句的问题

shell中的if语句逻辑错误

Linux里面shell里面fi命令作用是啥?

Linux | shell脚本-条件判断if和循环语句for

Linux Gvim shell if...else语句

shell脚本中的if中多条件语句如何写。