shell脚本

Shell中的内置命令--test

China☆狼群 提交于 2020-02-15 07:42:11
1.概念及用法 test 是Shell内置命令,用来检测某个条件是否成立 test通常和if语句一起使用,并且大部分if语句都依赖test test命令有很多选项,可以进行数值、字符串和文件三个方面的检测 Shell test命令的用法为: test expression 当test判断expression成立时,退出状态为0,否则为非0值 test命令也可以简写为【】,它的用法为: [ expression ] 注意: 【】和expression之间的空格,这两个空格是必须的,否则会有语法错误 【】的写法更加简洁,使用率更高 2.test可以判断3类条件( 数值比较 ) 数值条件测试可以用在数字和变量上 比较 描述 n1-eq n2 检查n1是否与n2 相等 n1-ge n2 检查n1是否 大于或等于 n2 n1-gt n2 检查n1是否 大于 n2 n1-le n2 检查n1是否 小于或等于 n2 n1-lt n2 检查n1是否 小于 n2 n1-ne n2 检查n1是否 不等于 n2 示例 不能在test命令中使用浮点值 3.test可以判断3类条件( 字符串比较 ) 比较 描述 str1 = str2 检查str1与str2 相同 str1 != str2 检查str1与str2 不同 str1 < str2 检查str1是否比str2 小 str1 > str2

Shell编程---函数部分

穿精又带淫゛_ 提交于 2020-02-15 07:22:23
1.Shell函数的本质 本质 是一段可以重复使用的脚本代码 这段代码被提前编写好了,放在指定的位置,使用时直接调取即可 Shell中的函数和C++、Jave、Python、C#等其他编程语言中的函数类似,只是在语法细节有所差别 2.Shell函数的语法格式 function name ( ) { statements [ return value ] } 关于各个部分的说明: function 是Shell中的关键字,专门用来定义函数 name 三个函数名 statements 是函数要执行的代码,也就是一组语句 return value 表示函数的返回值,其中return是Shell关键字,专门用在函数中返回一个值(用【】括起来的这一部分可以写也可以不写) 注意: 用{ }包围的部分成为函数体,调用一个函数,实际上就是执行函数体中的代码 3.函数定义的简化写法 简化写法1 函数定义时也可以不写function关键字 name ( ) { statements [ return value ] } 简化写法2 若写了function关键字,也可以省略函数名后面的小括号 function name { statements [ return value ] } 4.函数调用 调用Shell函数时可以给它传递参数,也可以不传递 如果不传递参数,直接给出函数名字即可: name

shell后台定时任务crontab的用法

橙三吉。 提交于 2020-02-14 21:59:47
语法:crontab[-u username]|-l|-r|-e|-v -u:指定crontab job的用户 -l:列出当前crontab的job -e:使用$EDITOR编辑crontab job -v:列出当前crontab job的状态,有的shell可能不支持-v crontab file填写格式: 每一行对应一个cron job 每一行分为六个部分,每一部分用空格隔开,同一个部分用逗号隔开 minute hour day_of_month month weekday command 前五个域中使用*,则表示所有的时间点 minute:0-59 hour:0-23,0代表零点 day_of_month:1-31 month:1-12 weekday:0-6,0代表星期天,1-6代表星期一到星期六 command:需要执行的脚本或者命令 $ cat test_cron.sh #!/bin/sh #将系统时间输出到文件time.txt echo `date`>>time.txt #查看当前的cronjob,系统提示没用用户habao的cronjob $ crontab -l no crontab for habao #添加cronjob $ crontab –e #没隔一分钟执行一次 #显示当前系统时间#写在crontab文件中可方便查看定时作业的用途 * * * * *

Linux之认识BASH和Shell

有些话、适合烂在心里 提交于 2020-02-14 20:14:10
前序:在Linux的环境下,如果你不清楚什么是Bash,那么我就只能说:兄弟,其他的东西先别学了,去赶紧补习一下这方面的知识吧,接下来,我要讲的关于BASH的内容,几乎是所有命令行格式与未来主机维护与管理的重要基础。加油吧老铁!!!**小二,给客人上硬菜!!! ** 一、硬件、内核与Shell 只要稍微有些计算机基础的人都知道,管理计算机硬件的是操作系统的内核(Kernel),这个内核是需要保护的,为什么需要保护?因为操作系统实际上是一些软件的集合体,由于这组软件在控制整个硬件与管理系统的活动检测,所以不是一般人可以去碰的,碰坏了怎么办?就像你的小女朋友一样,家里的事情是她做主,而你还要负有保护她的义务。既然内核被保护着,所以我们就需要一个媒介来与之沟通,这个时候我们普通用户就只能通过shell来跟内核进行沟通,借以让内核完成我们所要实现的任务。 简单举个例子,大家都会用电脑放音乐听歌对吧,那么对于电脑来说想要把一首歌放出来都需要什么呢?一是硬件,也即是声卡、扬声器等设备;二是操作系统的内核,它可以支持这个芯片组,同时提供芯片的驱动程序;三是应用程序,这个简单,可以理解为用户输入发出声音的命令。现在的问题是系统如何识别你的命令呢,硬件如何知道需要执行你的命令了呢?这个时候,就需要通过Shell将我们输入的命令与内核进行沟通,好让内核可以控制硬件准确地放出音乐

在shell下执行命令的方法

人走茶凉 提交于 2020-02-14 10:56:17
在shell下执行命令的方法 1. #!/bin/sh 语法:在shell.sh的开头写入 #!/bin/sh 一般的shell脚本就是这种用法。这种方法调用脚本开头的shell执行命令,子shell执行的时候, 父shell暂停运行,等待子shell运行完后返回父shell。子shell从父shell继承环境变量.但是子shell中的环境变量不会带回父 shell 2. exec 语法: exec 命令 exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了(相当于父shell被子shell删除) 3. source或者 语法: source /xxx/shell.sh . /xxx/shell.sh (1)与fork的区别是不新开一个子shell来执行被调用的脚本,而是在同一个shell中执行。所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用。 (2)与 exec 的区别在于这个命令开启的子shell不会将父shell吞噬,执行完这个子shell以后还可以继续执行父shell下面的指令 4. () 语法: ( 语句;语句;语句;…… ) 圆括号中命令列表的命令将会运行在一个子shell中。 比如: $ (cd

shell脚本基础

南笙酒味 提交于 2020-02-14 10:21:21
目录 1.变量 1.1 变量即可以变化的量 1.2 变量名称注意事项 1.5 bash变量类型 1.5.1 本地变量 1.5.2 环境变量 1.5.3 位置变量 1.5.5 bash内建环境变量 1.5.6 只读变量(常量) 2. 脚本基础 2.1 什么是脚本? 2.2 程序返回值 2.3 脚本测试 2.4 写脚本注意事项 2.5 shell算术运算 2.6 命令间的逻辑关系 示例: 1.变量 1.1 变量即可以变化的量 变量即可以变化的量 1.2 变量名称注意事项 只能包含字母、数字、下划线,并且不能以数字开头 不应该跟系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要用“_”下划线开头 最好做到见名知义 不能使用程序中的保留字,例如if、for等 1.3 变量类型 字符型 数值型 整型 浮点型 布尔型 1.4 变量操作 设置变量 引用变量 撤销变量 unset 变量 单引号与双引号的区别 1.5 bash变量类型 环境变量 本地变量(局部变量) 位置变量 特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量) 1.5.1 本地变量 VAR_NAME=VALUE //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效 local VAR_NAME=VALUE //局部变量

shell脚本练习题->1

我的未来我决定 提交于 2020-02-14 10:11:19
猜随机数的大小 描述: 写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个0-100的数字)一样时,直接退出,否则让用户一直输入:并且提示用户输入的数字比预设数字大或者小 分析: 1:随机数字是如何生成的 2:这是一个死循环,直到猜对了才能退出 3:需要判断大小 脚本实现: [root@jumpserver-70 scripts]# cat num_random.sh #!/bin/bash num=$(echo $(($RANDOM%100+1))) i=0 while true do read -p "请猜一下这个数是多少:" number let i++ if [[ ! $number =~ ^[0-9]+$ ]];then echo "请检查输入的是否为数字" elif [ $number -gt $num ];then echo "你输入的数大了!" elif [ $number -lt $num ];then echo "你输入的数小了- -" else echo "恭喜你!都会抢答了。" echo "你一共猜了 $i 次" exit 1 fi done 实现的效果: [root@jumpserver-70 scripts]# sh num_random.sh 请猜一下这个数是多少:10 你输入的数小了- - 请猜一下这个数是多少:50 你输入的数小了- -

shell 练习 - 第七周

冷暖自知 提交于 2020-02-14 08:59:22
1、 用shell实现传入进程pid, 查看对应进程/proc下CPU、内存指标 #!/bin/bash read -p "Input PID Value: " pid pid_exist=`ps aux|awk '{print $2}'|grep -w $pid` if [ ! $pid_exist ];then echo "$pid is not exist!!" else echo "Memory Usage :" cat /proc/$pid/status | grep ^Vm echo "Cpu Usage : " echo "PID LWP %CPU :" ps -eLo pid,lwp,pcpu | grep $pid fi 2、 编写Nginx的systemd配置文件, 实现nginx进程开机启动 #安装nginx yum install nginx #编写脚本 vim /etc/systemd/system/nginx.service #描述相关 [Unit] Description=nginx After=network.target #脚本 [Service] Type=forking ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx reload ExecStop=/usr/sbin/nginx

Shell编程之while循环和until循环

时光总嘲笑我的痴心妄想 提交于 2020-02-14 08:32:42
一、当型和直到型循环 1.while循环语句 while < 条件表达式 > do 指令... done while循环执行流程对应的逻辑图 2.until循环语句 until < 条件表达式 > do 指令... done until会在条件表达式不成立时,进入循环体执行指令。 3.基本范例 (1)每隔2秒输出一次系统负载 [root@codis-178 ~]# cat 10_1.sh #!/bin/bash while true do uptime sleep 2 done [root@codis-178 ~]# sh 10_1.sh 13:59:41 up 251 days, 22:33, 1 user, load average: 0.02, 0.03, 0.00 13:59:43 up 251 days, 22:33, 1 user, load average: 0.02, 0.03, 0.00 13:59:45 up 251 days, 22:33, 1 user, load average: 0.02, 0.03, 0.00 13:59:47 up 251 days, 22:33, 1 user, load average: 0.02, 0.03, 0.00 (2)防止脚本执行中断的办法 1)使用&,在后台运行 2)使用nohup加&,在后台运行 3

Linux Shell for循环写法总结

青春壹個敷衍的年華 提交于 2020-02-14 08:21:17
关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿... 1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done 2、在shell中常用的是 for i in $(seq 10) 3、for i in `ls` 4、for i in ${arr[@]} 5、for i in $* ; do 6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do 7、for i in f1 f2 f3 ;do 8、for i in *.txt 9、for i in $(ls *.txt) for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组 ============ -_- ==============for num in $(seq 1 100) 10、LIST="rootfs usr data data2" for d in $LIST; do 用for in语句自动对字符串按空格遍历的特性,对多个目录遍历 11、for i in {1..10} 12、for i in stringchar {1..10} 13、awk 'BEGIN{for