shell基本语句

本文详细介绍Shell脚本的基础知识,包括变量定义与使用、参数传递、运算符、流程控制、函数定义及定时任务设置。深入讲解如何在Linux环境下利用Shell进行高效编程。

shell基础语句

shell变量

可以直接为一个变量赋值
如:a=123
b=“start” (单引号、双引号、不用都可以)
使用时 echo ${a}
echo b也可把变量更改为只读readonly变量名删除变量:unset变量名局部变量:局部变量在脚本或者命令中定义,仅在当前shell中有效环境变量:所有的程序,包括shell启动的程序拼接字符串(可以用双引号,也可以用单引号)a="abc"b="www"c="wwww,"{b} 也可把变量更改为只读 readonly 变量名 删除变量: unset 变量名 局部变量:局部变量在脚本或者命令中定义,仅在当前shell中有效 环境变量: 所有的程序,包括shell启动的程序 拼接字符串 (可以用双引号,也可以用单引号) a="abc" b="www" c="wwww,"breadonlyunsetshellshell()a="abc"b="www"c="wwww,"{a}""
获取字符串长度
echo ${#a}
echo ${c:0:4} 取c字符串的0到4的字符
或者
echo $c |awk -F ’ 分隔的字符串’ ‘{print $1}’ $i 代表分隔后的第几个字符串。

shell传递参数

向脚本传递参数,脚本内获取参数的格式为:$n n代表一个数字,分别代表第几个参数
创建的.sh文件 下面是其内容

#!/bin/bash
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "传递的脚本参数个数:$#"
echo "显示所有向脚本传递的参数:$*"
echo "脚本运行的当前进程ID号"
echo "显示最后命令的退出状态:$?"

运行该.sh文件 并传入参数

#为脚本设置可执行权限
chmod +x 文件名.sh
#执行脚本
./文件名.sh 1 2

shell基本运算符

包括算术运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符
算术运算

  • 、- 、*、/ 、%、赋值= 、 相等== 、不相等!=
a=1
b=2
#表达式和运算符之间要有空格 ==可以判断两个数字是否相等
echo `expr $a + $b` 
echo $[ $a+$b ]
echo $(( $a + $b ))
if [ $a==$b ]
then
	echo "a等于b"
else
    echo "a不等于b"

关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
-eq 相等
-ne 不相等
-gt 左边的数大于右边的数 -ge 大于等于
-lt 左边的数小于右边的数 -le 小于等于

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
字符串运算符
= 、!=   检测两个字符串是否相等
-z   检测字符串的长度是否为0
-n    检测字符串的长度是否不为0
$    检测字符串是否为空

```powershell
a=asd
b="www"
if [ $a = $b ]
then 
	echo "$a$b  相等"
else 
    echo "$a$b  不相等"
fi
if [ -z $a ]
then 
    echo "长度为0"
else
    echo "长度不为0"
fi
if [ $a ]
then
   echo "$a : 字符串不为空"
else
   echo "$a : 字符串为空"
fi

文件测试运算符
-d 检测是否是目录 是 返回true
-r 检测文件是否可读 是返回true
-w 检测文件是否可写 是返回true
-x 检测文件是否可执行 是返回true
-e 检测文件是否存在 是返回true

file="/var/www/test.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi

echo命令

1、echo命令用于输出字符串

echo www
echo "wwww"
#转译字符
echo "\"wwww"\"

2、显示变量

#!/bin/bash
#输入
read name
#输出
scho "$name "

3、显示换行

#-e 开启转义
echo -e "ok! \n"

4、显示命令自行结果

#显示当前日期
echo `date`

printf命令
printf也是输出命令

#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 

其中%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐)
%-4.2f 指格式化为小数,其中.2指保留2位小数。
test命令
用于检测某个条件是否成立
1、数值测试
在这里插入图片描述

#!/bin/bash
num1=100
num2=200
if test $[num1] -eq $[num2]
then 
	echo "相等"
else
	echo "不相等"
fi

字符串测试
在这里插入图片描述

#!/bin/bash
a=ww
b=ss
if test $a = $b
then
    echo '相等!'
else
    echo '不相等!'
fi

shell 流程控制

shell的流程控制不可为空

条件语句

#if语句
if
then

fi
#if -else 语句
if
then

else

fi
#if -else -else 语句
if
then

elif
then

else
then

fi

循环语句

break 结束循环
continue 跳出当前循环
#for 语句
for (( 变量值; 循环条件; 每次循环的变化量))
do

done

增强for
for a in param1 param2 。。。
do

done

#while循环
a=1
while [ $a -le 7]
do

let “a++”
done

#case判断

case 变量:
变量1)

;;
变量2)

;;
*)

;;
esac

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

shell函数

用户可以自定义函数

#!/bin/bash
demofun(){
echo "第一个sell函数小样"
return $((1 + 1))
}
#在.sh文件中调用
demofun
#函数的返回值在调用该函数后通过$? 来获得
echo $?

在shell中调用函数时可以向其传递参数

#!/bin/bash
cd /opt/tomcat8
start(){
        echo "启动tomcat应用"
        ./bin/startup.sh
}
stop(){
        echo "关闭tomcat应用"
        ./bin/shutdown.sh
}
restart(){
        stop
        start
}
action=$1
control(){
case $action in
start)
        start
        ;;
stop)
        stop
        ;;
restart)
        restart
        ;;
*)
        echo "正常的参数应该是start|stop|restart"
        echo "请重新正确执行脚本"

esac
}
control $1

定时器

1、crontab是什么
定时任务软件种类
crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现
其中crond 运行linux后,开机自启动crond任务,crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。系统会每分钟检查是否有要执行的任务工作(循环检测)默认系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过/etc/cron.allow文件限制权限。

所有用户crontab文件存放的目录,以用户名命名

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command
可以使用crontab [-u user] -e 进入crontab 文件中 不写-u user 则是默认是root用户 写了是其他用户在这里插入代码片
如* * * * * cat /tmp/test.txt >> /tmp/test01.txt 把 test.txt中的文件里的内容每分钟更新一次,追加到test01中
此时就具有一个定时器
关闭定时器: 可以把文件里的内容删掉 也可以删除掉这个crond进程 这些情况下,在启动需手动启动,或者关闭虚拟机在打开

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值