shell脚本的基本命令及常见运算符

bshell脚本

shell脚本是包含一系列命令的文本文件
用于重复性操作–事务批处理–自动化运维–定时任务执行

#!为一个约定的标记
放到linux里先授权,后执行

ps:在对变量进行取值时,最好用${xx}来划定范围,$xx这样会有歧义

一:基本操作:

1.打印:
变量打印:
#!/bin/bash
echo 'hello world'
name="zs"
echo "hello,"${name}
echo ${name}
# \$在单引号里无法取到变量,双引号能对${name}取变量
echo "hello,${name}"
echo 'hello,${name}'

结果显示:
[root@niceday ~]# ./test.sh
hello world
hello,zs
zs
hello,zs
hello,$name



命令打印:
name= `rpm -qa | grep mysql`
echo $name
[root@niceday opt]# ./test2.sh 
mysql-community-release-el7-5.noarch mysql-community-common-5.6.48-2.el7.x86_64 mysql-community-client-5.6.48-2.el7.x86_64 mysql-community-server-5.6.48-2.el7.x86_64 mysql-community-libs-5.6.48-2.el7.x86_64

2.计算:
数值计算:
# 展开计算
v1=123
v2=456
((var=$v1 + $v2))
echo "var is:$var"
[root@niceday opt]# ./test2.sh 
var is 579

3.流程控制:
if判断:
#!/bin/bash
# $0为程序本身 $1-$9代表顺序输入参数编号 -大于10使用括号${10}
if [ $1 == $2 ]
then
        echo "hello"
fi
if [ $2 -gt $3 ]
then
        echo "dayu"
fi
#  fi 为if反写来表示结尾
[root@niceday opt]# ./test2.sh  10 10 50
hello

if [ $1 -lt 20 ]
then
        echo "hello"
elif [ $1 -lt 40 ]
then
        echo "大于20小于40"
else
        echo "其他值"
fi

[root@niceday opt]# ./test2.sh  40 
其他值
[root@niceday opt]# ./test2.sh  30 
大于20小于40

for判断:
var=`rpm -qa | grep mysql`
for x in $var
do
        echo "my data:$x"
done
[root@niceday opt]# ./test2.sh 
my data:mysql-community-release-el7-5.noarch
my data:mysql-community-common-5.6.48-2.el7.x86_64
my data:mysql-community-client-5.6.48-2.el7.x86_64
my data:mysql-community-server-5.6.48-2.el7.x86_64
my data:mysql-community-libs-5.6.48-2.el7.x86_64

while判断:
while(($nums <= 5))
do
        echo "num: $nums"
        let "nums++"
        # ((nums=$nums + 1))
done

[root@niceday opt]# ./test2.sh 
num: 1
num: 2
num: 3
num: 4
num: 5

二:运算符:

数值关系运算符:
  • -eq 等于----equal
  • -ne 不等于----not equal
  • -gt 大于----greater than
  • -lt 小于----less than
  • -le 小于或等于 ----less or equal
  • -ge 大于或等于----greater pr equal
布尔运算符:
  • -o 或运算
  • -a 与运算
    $0为程序本身 $1-$9代表顺序参数编号 -大于10使用括号${10}
字符串运算符:
  • 判断字符串相等直接=即可
  • -z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
  • -n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n “$a” ] 返回 true。
  • $ 检测字符串是否为空,不为空返回 true。
    字符串之间判断是用=,而不是==。
文件运算符:
  • -e 判断文件是否存在-exist
  • -d 判断是不是目录 -directory
  • -r 判断文件是不是可读 -read
  • -w 判断文件是否可写 -write
  • -x 判断文件是否可执行 -excute
  • -f 判断是不是普通文件(既不是目录,也不是设备文件)-file
  • -s 判断文件是否为空 -size

猜你喜欢

转载自blog.csdn.net/qq_35050438/article/details/106135013