shell编程入门-if判断

1. shell简介:

Shell是用户与Linux操作系统之间沟通的桥梁,用户可以输入命令执行,又可以利用 Shell脚本编程去运行。

在这里插入图片描述

1.1 常见SHELL解释器如下:
  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

不同的Shell语言的语法有所不同,一般不能交换使用,最常用的shell是Bash,也就是Bourne Again Shell。Bash由于易用和免费,在日常工作中被广泛使用,也是大多数Linux操作系统默认的Shell环境。

1.2 第一个脚本:
#!/bin/bash
#by lutixia
#2020-03-10
#############################

echo "hello world"
1.3 脚本运行方式:
### 方式一:
chmod +x  hello.sh
./hello.sh

### 方式二:
bash  hello.sh

### 方式三:
.   hello.sh

ps:以上三种运行方式,第一种需要有可执行权限,后面两种不需要可执行权限。前两种是在子shell中运行,最后一种是直接在父进程运行,也就是会直接影响当前shell进程。

2. shell变量:

2.1 系统变量:

Shell常见的变量之一系统变量,主要是用于对参数判断和命令返回值判断时使用,系统变量详解如下:

$0 							   当前脚本的名称;
$n 							   当前脚本的第n个参数,n=1,2,…9;
$* 							   当前脚本的所有参数(不包括程序本身);
$# 							   当前脚本的参数个数(不包括程序本身);
$? 							   命令或程序执行完后的状态,返回0表示执行成功;
$$ 							   程序本身的PID号。
2.2 环境变量:

Shell常见的变量之二环境变量,即程序运行时的环境,环境变量详解如下:

PATH  							命令所示路径,以冒号为分割;
HOME  							打印用户家目录;
SHELL 							显示当前Shell类型;
USER  							打印当前用户名;
ID    							打印当前用户id信息;
PWD   							显示当前所在路径;
TERM  							打印当前终端类型;
HOSTNAME      				    显示当前主机名。
2.3 用户变量:

Shell常见的变量之三用户变量,用户变量又称为局部变量,主要用在Shell脚本内部或者临时局部使用,用户变量详解如下:

NGINX_VERSION=nginx-1.18.0.tar.gz  		自定义变量NGINX_VERSION;
PREFIX=/usr/local/nginx   	    		自定义变量PREFIX;


### 范例:

#!/bin/bash
#by lutixia
#2021-03-10 20:12:36
#############################

echo -e '\033[32m-----------------------------\033[0m'
PKG_NAME=nginx
URL=http://nginx.org/download/
echo -e "\033[36m请选择你的操作:\033[0m"
echo
echo "1)官方下载$PKG_NAME源码包"
echo "2)编译安装$PKG_NAME服务器"
echo "3)启动$PKG_NAME服务器"
echo "4)查看$PKG_NAME官网下载地址:$URL"
echo -e '\033[32m-----------------------------\033[0m'

3. if判断:

If条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断,if表达式如下:

if 条件
then
    commands
fi

或者:
if 条件;then
    commands
else
	commands
fi

或者:
if 条件;then
    commands
elif 条件
	commands
else
	commands
fi

if语句会运行if后面的那个条件(命令),如果该命令的退出状态码是0(该命令成功运行),位于then部分的命令就会被执行。如果该命令的退出状态码是其他值, then部分的命令就不会被执行,bash shell会继续执行脚本中的下一个命令。

3.1 数值的比较条件:
n1  -eq  n2						检查n1是否与n2相等
n1	-ge  n2						检查n1是否大于或等于n2
n1	-gt  n2						检查n1是否大于n2
n1	-le  n2						检查n1是否小于或等于n2
n1	-lt  n2						检查n1是否小于n2
n1	-ne  n2						检查n1是否不等于n2
3.1.1 范例猜数字:
#!/bin/bash
#by lutixia
#############################

num=60
read -p "请输入你的数字:" number
if [ $number -gt $num ];then
        echo "猜大了哦,再猜一次。"
elif [ $number -lt $num ];then
        echo "猜小了哦,再猜一次。"
else
        echo "猜中啦,真棒!"
fi
3.2 字符串的比较条件:
str1 = str2						检查str1是否和str2相同
str1 != str2					检查str1是否和str2不同
str1 < str2						检查str1是否比str2小
str1 > str2						检查str1是否比str2大
-n str1							检查str1的长度是否非0
-z str1							检查str1的长度是否为0
3.2.1 范例:
#!/bin/bash
#by lutixia
#############################

read -p "请输入你要安装的软件包名:" name

if [ "$name" = "nginx" ];then
        yum install $name -y
elif [ -z "$name" ];then
        echo "你还没有输入包名!"
fi

3.3 文件的比较条件:
-d file							检查file是否存在并是一个目录
-e file							检查file是否存在
-f file							检查file是否存在并是一个文件
-r file							检查file是否存在并可读
-s file							检查file是否存在并非空
-w file							检查file是否存在并可写
-x file							检查file是否存在并可执行
-o file							检查file是否存在并属于当前用户所有
-G file							检查file是否存在并默认组与当前用户相同
file1 -nt file2					检查file1是否比file2新
file1 -ot file2					检查file1是否比file2旧
3.3.1 范例
#!/bin/bash
#by lutixia
#############################

if [ ! -d /usr/local/redis/ ];then
        cd /usr/src/
        if [ ! -f redis-5.0.5.tar.gz ];then
                wget -c http://download.redis.io/releases/redis-5.0.5.tar.gz
        fi
        tar xf redis-5.0.5.tar.gz
        cd redis-5.0.5
        make PREFIX=/usr/local/redis/  install
fi

获取文章更新,以及常用软件,可以关注公众号: 笨办法学linux
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维朱工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值