社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
在学习shell编程要有一定的正则表达式的基础知识。
符号 含义 举例
^ 开始标记 "^abc"满足的例子abc
^ 非(在[]内) "[^abc]"满足例子:ddd、mpd
$ 结束标记 "abc$"满足例子:abc,mmabc
匹配转义后的字符串
. 任意字符 "a.c"满足例子:abc,abcd
< 匹配单词开始 "<abc"满足的例子abc、abcd
> 匹配单词结束 "abc>"满足的例子abc,pmrabc
| 或 "AAA|BBB"满足例子:AAA,BBBpp
? 匹配前一个字符0或1次 "abc?"满足的例子ab、mabcd
好* 匹配钱一个字符>=0次 “abc*”满足的例子:abbb
好+ 匹配前一个字符>=1次
{} {m}{m,n}{m,}{,n}分别匹配钱一个字符m次、m到n次、>=m次、<=n次
[] []范围内选其一,比较特殊的[0-9]代表数字,[a-z]代表小写字母
() 将候选的所有元素放在()内,用|分隔开 "a(1|2|3)b"满足的例子a1b
位置变量 :将传递给脚本的参数保存在位置变量中,以便于在脚本中引用这些参数
其中Bash定义了9个位置变量,分别是$1 ….脚本编写者在脚本中引用这9个变量,获取传递给脚本的参数
注意:
$1 位置参数
$0 脚本名称
“+”“-” “*”“/”“%”
使用方法
expr expression
举例
注意:expr要有空格 # expr 5 + 2
举例1
[] 方式最常见 注意:测试表达式与中括号之间一定要有空格
举例2
例子3
注意 字符串一定要打引号
#!bin/bash 声明环境
#test 以#开头的部分全部表示注释
#shell脚本从上往下依次执行
date
grep 'root' /etc/passwd
执行Shell脚本
添加权限命令: chmod 744 1.sh
./1.sh (./ 表示当前目录)
. /temp/1.sh 表示执行这个文件
举例1:
例子2
#!/bin/bash
for i in {1..10}
do
mkdir /home/zxq/shell/test/dir$i
done
#!/bin/bash
for i in ‘seq 50’ #反应好代表命令预先执行
do
mkdir /home/zxq/shell/test/dir$i
done
#!/bin/bash
For((i=1;i<=10;i++))
Do
Sum=$((SUM+1))
Done
Echo $SUM
#!/bin/bash
i=1
while [ $i –le 10 ] #注意空格
do
SUM=$((SUM+i))
i=$[i+1]
done
echo $SUM
读取文件
#!/bin/bash
while read –r line #read 逐行读取
do
echo $line
done < /etc/passwd # < 后面接文件
#!/bin/bash
if [ 3 –eq 3 ] #注意 if后面要有空格 [] 也要有空格
then
echo yes
fi
#!/bin/bash
case $1 in
top)
top
;;
free)
free
;;
df)
df
;;
*)
echo "usage:$0{top|free|df}"
esac
#!/bin/bash
sum(){
echo $(($1+$2))
}
sum 5 6
crontab
1)确保服务启动
service crond status
chkconfig --list
2)制定计划任务内容
Crontab –e
和vi界面一样进行输入 * * * * * cmd 前面五列表示时间用空格分开
例如:
0 2 * * 3 cp /etc/passwd /tmp
每周三凌晨2点备份文件/etc/passwd 到tem文件夹中
5 1 10,25 * * rm –rf /tmp/*
每个月10号和25号凌晨1点5分执行(没半个月清空一次tmp)
*/10 * * * * ntpdata 时间服务器IP
每10分钟执行时间同步
0 1-6 * * *
每天1点到6点执行
3)重启crond服务
service crond restart
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!