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,"b也可把变量更改为只读readonly变量名删除变量:unset变量名局部变量:局部变量在脚本或者命令中定义,仅在当前shell中有效环境变量:所有的程序,包括shell启动的程序拼接字符串(可以用双引号,也可以用单引号)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 //重新载入配置
本文详细介绍Shell脚本的基础知识,包括变量定义与使用、参数传递、运算符、流程控制、函数定义及定时任务设置。深入讲解如何在Linux环境下利用Shell进行高效编程。
709

被折叠的 条评论
为什么被折叠?



