shell脚本-02

一、read

1、read 变量1 变量2....

#!/bin/bash

echo "请输入两个数>:  "

#遇到空格就分割字符串

read var1 var2

echo "var1 = $var1"

echo "var2 = $var2"

2、read -p

#!/bin/bash

# read -p "提示内容" 变量
# 类似于上一个命令的echo和read的结合

read -p "请输入两个变量" var1 var2

echo "var1 = $var1"

echo "var2 = $var2"

3、read -a

#!/bin/bash

#read -a 数组名 数组的数据依次对数组赋值

read -a arr

echo "${arr[0]}"

#可以和-p结合使用

read -p "请输入3个数字" -a arr

echo "${arr[0]}"

echo "${arr[@]}"

4、read -n num 变量名

#!/bin/bash

echo "输入数字:>  "

#当输入的字符个数为2的时候程序自动结束
read -n 2 var1 var2

echo "var1 = $var1"

echo "var2 = $var2"

5、read -s 变量名

#!/bin/bash

#read -s 静默输入 输入时不显示输入的结果

read -p "请输入用户名" username

read -p "请输入密码" -s passwd

echo "username = $username"

echo "passwd = $passwd"

6、read -t 秒数 变量

#!/bin/bash

#read -t 秒数  变量

# 在规定的时间内输入变量的值

read -t 3 var1

# 在三秒内输入var1的值
echo "var1 = $var1"

二、shell 运算

1、(())

1、支持整数的运算,但不支持浮点数的运算

2、可以向C语言一样进行复杂的运算

#!/bin/bash

var1=10

var2=20

# 这里括号内的$可以省略不写
var3=$(($var1+$var2))

echo "var3 = $var3"

2、$[ ]

1.支持整数运算,不支持浮点运算
2.在运算的时候,取变量的内容可以加$也可以不加

3、运算的结果一定要赋值给一个变量保存

4、用法跟(())一样

#!/bin/bash

var1=10

var2=100

var3=$[ $var1 + $var2]

echo "var3 = $var3"


## 幂运算

var4=$[2**2]
echo "var4 = $var4"

3、expr

1.支持整数运算不支持浮点运算
2.在运算的时候需要加上空格
3.引用变量的时候必须加上$
4.expr 可以输出结果
5.如果需要将结果赋值给一个变量,那么需要命令置换
6.expr 的算术运算
          + -  \*  /
  关系运算
       \> \< \>= \<= ==
  如果需要加上括号运算,括号需要转义
          \(  \)
7.expr 不能进行幂运算

#!/bin/bash

var1=10

var2=20

expr $var1 + $var2


var3=10

var4=30

expr \( $var3 + $var4 \) \* var4

三、选择结构

语法结构:       

if 判断式
then
  语句块;
fi
  

判断式

第一种:
      [ 判断式 ]  [  ] 左右必须有空格;
第二种:
      test 判断式  test 左右也必须有空格

shell整数的判断式

 -gt 大于
 -ge 大于等于
 -lt 小于
 -le 小于等于
 -eq 等于
 -ne 不等于

与或非:

&&   -a
||   -o 
!     !

一个小demo

#输入一个成绩判断其等级

#!/bin/bash

read -p "请输入成绩" score

if test $score -gt 100 -o $score -lt 0
# -gt 是大于的意思 
# -o  是或的意思
# -lt 是小于的意思
then 
    echo "请输入0~100之间的数字"
    bash $0
    #$0代表的脚本名字,在前面加上bash则代表执行该脚本
    exit 1
    # 重新执行该脚本
 
fi

#-ge 代表大于等于的意思
#-le 代表小于等于的意思 
#-a 代表且的意思
if[ $score -ge 90 -a $score -le 100 ]
then
    echo "S"
elif [ $score - ge 80 -a $score -lt 90 ]
then
    echo "A"
elif [$score -ge 70 -a $score -lt 80]
then
    echo "B"
elif [$score -ge 60 -a $score -lt 70]
then 
    score "C"
else
    echo "D"
fi

四、字符串的比较

-z 判断字符串是否为空 
-n 判断字符串不为空
= 判断字符串相等
!= 判断字符串不等 
 /> 判断字符串大于
 /< 判断字符串小于
  对字符串的判断,在引用字符串内容的时候加上引号;

#从终端输入两个字符比较两个字符的大小

read -p "请输入两个字符" var1 var2

if [ -n var1 -0 -n var2 ]
then 
    if[ "&var1" \> "$var2" ]
    then
    echo "var1 > var2"
    elif [ "$va1" = "$var2" ]  
    then
        echo "var1 = var2"
     else
        echo "var1 < var2"
    fi
else
    echo "var1 || var2 is empty"
fi
   

五、shell 对文件的判断

1、对文件类型的判断

-f 判断文件是否存在并判断是否为普通文件
-d 判断文件是否存在,并判断是否为目录文件
-L 判断文件是否存在,并判断是否为链接文件
-b 判断文件是否存在,并判断是否为块设备文件
-c 判断文件是否存在,并判断是否为字符设备
-p 判断文件是否存在,并判断是否为管道文件
-S 判断文件是否存在,并判断是否为套接字文件
-s 判断文件是否存在,文件长度大于0为真
-e 判断文件是否存在

一个demo

#输入一个文件判断类型

read -p "请输文件名" file 
	
	if [ -e $file ]
	then
		echo "文件存在"
		if [ -d $file ]
		then
			echo "d"
		elif [ -L $file ]
		then
			echo "l"
		elif [ -b $file ]
		then
			echo "b"
		elif [ -c $file ]
		then 
			echo "c"
		elif [ -p $file ]
		then 
			echo "p"
		elif [ -f $file ] 
		then
			echo "f"
		else
			echo "S"
		fi
	else
		echo "文件不存在"
	fi

2、对文件权限的判断

-w 判断文件是否具备写权限
-r 判断文件是否具备读权限
-x 判断文件是否具备执行权限

一个小demo

:<<!
eg:
	输入一个文件,判断文件是否存在,如果存在那么再判断文件是否具备
    写权限,如果写权限就往这个文件写入一句“hello world”,如果
    不具备写权限,那么赋上写权限再写人hello world;
!

read -p "请输入一个文件名" file

	if [ -e $file ]
	then
		if [ -w $file ]
		then
			echo "hello world" > $file
		else
			chmod 777 $file
			echo "hello world" > $file
		fi
	else
		touch $file
	fi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值