第一个shell脚本
#!/bin/bash
echo "hell world"
shell脚本输出变量
#!/bin/bash
var="hello"
echo $var
# ‘#’在shell中标识注释
#或者使用{}限定变量的范围
echo ${var}
#echo $var 和 echo ${var}的区别 比如
#aa="hello" a=1
echo $aa #输出 hello
echo ${a}a #输出 1a
shell 中的变量
#!/bin/bash
var="ediso" #不加任何修饰 即为全局变量 生命周期为脚本结束
test()
{
var1="chen"
local var2="nihao" #使用local 修饰的即为局部变量,生命周期为函数结束 只能在函数中使用
}
test #函数调用
local var3="efrgt" # 运行报错 local只能在函数中使用
echo $var # 输出ediso
echo $var1 # 输出chen
echo $var2 # 输出 为空
shell 计算两个数的和(考查把字符转整数)
#!/bin/bash
echo '请输入两个整数以空格隔开:'
num1=$1 # 获取第一个参数的值($0为脚本名)
num2=$2 # 获取第二个参数的值
sum=$[num1]+$[num2] # $[num]将输入值转为整数
echo -n $[sum] # -n 表示不换行
计算1-100的和(考查for循环最基本使用)
#!/bin/bash
echo 'useage:求100以内数的和'
sum=0
for i in {1..100} # 或者写成 for i in $(seq 1 100)
do
sum=$[$[sum]+$[i]]
#echo $sum
done
echo -n '1-100内数的和是:' $sum
使用crontab 制作定时任务(以ubuntu演示)暂时不演示安装过程
此时你的ubuntu 应该是已经支持crontab
开启服务:service cron start
关闭服务:service cron stop
新增任务:crontab -e 如图:
如上图24行 是每分钟 往crontabLog.txt文件中追加 “one minuter pro”
查看任务:crontab -l
shell 终端操作
1.显示当前时间:date "+%Y-%m-%d %H:%M:%S" // 输出2010-01-01 10:49:42
2.查看某个文件的创建时间:date -r /data/buildShell.sh "+%Y-%m-%d %H:%M:%S"
3.使用时间搓计算随机数并计算md5:date "+%s%d" | md5sum
shell 定时任务 删除指定时间之前的文件
需求:如果/data/run.log创建的时间超过了5小时。那么请删除它
在crontab 里面配置一分钟任务 */1 * * * * /data/removeFile.sh
removeFile.sh脚本文件的内容如下:
#! /bin/bash
if [ -f "/data/run.log" ] #里面内容距2边中括号要有空格
then
#获取run.log文件的创建时间 2010-01-01 17:24:58
file_time=`date -r /data/run.log "+%Y-%m-%d %H:%M:%S"`
#获取当前时间
cur_time=`date +"+%Y-%m-%d %H:%M:%S"`
#将时间转化为秒数 1262337898
file_data=`date +%s -d "$file_time"`
cur_data=`date +%s -d "$cur_time"`
#计算时间差
diff_time=$(($((cur_data))-$((file_data))))
#取时间差的绝对值
diff_time=${diff_time/-/}
#将秒数转为小时
var=$(($diff_time/3600))
if [$var -ge 5 ] # 大于等于5
then
rm /data/run.log
else
echo '时间未足5小时'
fi
else
echo '文件不存在'
fi
awk(超强文本处理器使用)
文本文件 test.txt 内容如下
1 aaa
2 bbb
1 ffgh
3 frfr y6y6
4 45 efrdrfr
awk '{print$0}' test.txt 打印全部内容
1 aaa
2 bbb
1 ffgh
3 frfr y6y6
4 45 e3frdrfr
awk '{print$1}' test.txt 打印第一列的内容
1
2
1
3
4
awk '/3/{print$0}' test.txt 打印包含3的所有内容
3 frfr y6y6
4 45 e3frdrfr
awk '{if($1%2==0) print$0}' test.txt 打印第一列能被2整除的所有内容
2 bbb
4 45 e3frdrfr