shell函数

shell编程基础-1

笑着哭i 提交于 2019-11-28 00:02:49
1. shell是什么? 一种脚本语言:是Linux系统命令的集合,写到脚本文件里,执行;支持逻辑判断、循环等结构化语句;可以自定义函数等。 2. 脚本文件的开头 #!/bin/bash #!/bin/bash 指定下面的命令在哪个命令解释器下运行 3. 脚本运行的方式 1)脚本文件加x权限,直接运行 2)通过sh命令运行 4. sh命令 -n 仅检查shell语句的语法错误,不检查shell命令 -x 在shell执行脚本的过程中,把每一个命令行和其结果都显示出来 5. date命令 格式:date [OPTION] [+FORMAT] -d    显示字符串所指的日期和时间 1)字符串格式 %Y 年 %m 月份 %d    日 %H 小时,24小时制(00-23) %M    分钟(00-59) %S 秒 %D    显示日期格式(mm/dd/yy) %F    显示日期格式(%Y-%m-%d) %T    显示时间(HH:MM:SS)    2)-d date -d "+1 day"     显示后一天日期 date -d "-1 day"     显示前一天日期   date -d "-1 month" +%Y%m%d 显示上一月的日期,指定格式   date -d "+1 month" +%Y%m%d 显示下一月的日期,指定格式 3)%s  时间戳 %s

shell函数

拟墨画扇 提交于 2019-11-27 21:58:31
1、函数介绍function 为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能。 且,这个功能在后面的代码中,会重复调用; 2、函数的语法格式 (1)函数的写法格式:   function check_cpu {   cat /proc/cpuinfo   }   ls /etc/   check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】 (2)*fun_name() { 函数体 $1 $2 ... $10 } fun_name 1 2 3 :wq function.sh 4 5 6 7 8 9 10 11 12 13 14 3、函数的调用 -- return 函数返回值 (1)当函数中指定了判断语句的时候,我们默认要返回一个错误的结果,但是最近一条命令确实正确的,这时候,我们需要通过return返回一个我们需要的错误状态码; (2)函数结束的时候,我们需要指定一个return的正确返回码; 如果使用在循环语句中,return会跳出循环; 4、函数接受参数 函数 变量 和普通的命令一样 只需要注意,在函数接受参数的时候,不会使用外部的传参,而是以脚本内部的参数为准, 5、函数中的变量 (1)本地变量 local 变量名=xxx 本地变量只在本函数内部生效 (2)局部变量 脚本内部的变量 (3

17 shell脚本--008函数

落爺英雄遲暮 提交于 2019-11-27 20:50:52
vim 中多行注释:    : 进入视图模式,    .,$s/^/#/ 1、函数   函数的写法格式:     (1)function check_cpu{       cat /proc/cpuinfo       }     check_cpu [不调用函数,则函数体中的内容则不会执行;在哪里调用,函数体中的命令就在哪里执行]     (2)fun_name(){         函数体         $1 $2 $3         }         fun_name 1 2 3 练习: #!/bin/bash # start1(){ if [ -e /var/lock/subsys/testd_name ];then echo "服务已启动" else touch /var/lock/subsys/testd_name echo "服务启动成功" fi } stop1(){ if [ -e /var/lock/subsys/testd_name ];then rm -f /var/lock/subsys/testd_name ;; echo "服务关闭成功" else echo "服务已经关闭" fi } status1(){ if [ -e /var/lock/subsys/testd_name ];then echo "文件存在" else "文件不存在" fi

Shell脚本(九):函数

六月ゝ 毕业季﹏ 提交于 2019-11-27 15:18:30
9.1 系统函数 1.basename基本语法 basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 选项: suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。 2.案例实操 (1)截取该/home/atguigu/banzhang.txt路径的文件名称 [atguigu@hadoop101 datas]$ basename /home/atguigu/banzhang.txt banzhang.txt [atguigu@hadoop101 datas]$ basename /home/atguigu/banzhang.txt .txt banzhang 3. dirname基本语法 dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)) 4.案例实操 (1)获取banzhang.txt文件的路径 [atguigu@hadoop101 ~]$ dirname /home/atguigu/banzhang.txt /home/atguigu 9.2 自定义函数 1.基本语法 [ function ] funname[(

Spark-03 scala

筅森魡賤 提交于 2019-11-27 14:14:34
前言 spark可以用三种不同的语言编写:scala,python和java,相比于其他两种语言,scala的性能较好。 ps:scala也是基于jvm的一种语言,有些地方效率比java更高。 1.函数式编程 Spark依赖于函数式编程,使用函数作为基本编程输入,函数没有状态或副作用,只包含输入和输出。 下面进入spark-shell,启动sparkshell不用先启动spark, 如果加了/spark-shell 启动命令:./spark-shell (local模式启动) ./spark-shell --master(启动spark) 现在写一个大小写字母转换的函数 再写spark读取一个文件,用.map方法遍历每一行,把toUpper传递进去 除此以外还能传递匿名函数。 来源: https://www.cnblogs.com/daysn/p/11367093.html

shell脚本练习

江枫思渺然 提交于 2019-11-27 13:35:29
1、 通过位置变量创建linux系统账户及密码 $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 1#!/bin/bash 2 # Author: wangshilin 3 # Blog: https://home.cnblogs.com/wangshilin/ 4 useradd "$!" 5 echo "$2 | passwd --stdin $2 " 2、 每周5使用tar命令备份/var/log 下的所有日志文件,防止文件覆盖 1 #!/bin/bash 2 # Author: wangshilin 3 # Blog: https://home.cnblogs.com/wangshilin/ 4 # Time: 2019-08-17 01:31:13 5 tar -czf log -`date +%Y%m%d` .tar.gz /var/log 6 00 03 * * 5 /root /logbak.sh 3、 实时监控本机内存和硬盘剩余空间,剩余内存小于500M,根分区剩余空间小于1000M的时候发送报警邮件 #!/bin/bash #3 disk =$(df -h / | awk '/\//{print $4}') mem=$(df -h / | awk '/\//{print $4}') if [ $disk -le 512000 -a $mem -le

shell编程知识

无人久伴 提交于 2019-11-27 13:18:41
shell编程 shell是一种脚本语言 可以使用逻辑判断、循环等语法 可以自定义函数 shell是系统命令的集合 shell脚本可以实现自动化运维,能大大增加我们的运维效率 开头需要加#!/bin/bash 以#开头的行作为解释说明 脚本的名字以.sh结尾,用于区分这是一个shell脚本 执行方法有两种 chmod +x 1.sh; ./1.sh bash 1.sh 查看脚本执行过程 bash -x 1.sh 查看脚本是否语法错误 bash -n 1.sh date时间命令 date +%Y-%m-%d=date +%F 年月日 date +%y-%m-%d 年月日 date +%H:%M:%S = date +%T 时间 date +%s 时间戳 date -d @1504620492 date -d "+1day" 一天后 date -d "-1 day" 一天前 date -d "-1 month" 一月前 date -d "-1 min" 一分钟前 date +%w 周几 date +%W 今年的第几周 shell脚本中的变量 当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替 使用条件语句时,常使用变量 if [ $a -gt 1 ]; then ... ; fi 引用某个命令的结果时,用变量替代 n= wc -l 1.txt 写和用户交互的脚本时

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

两盒软妹~` 提交于 2019-11-27 11:13:56
20.16/20.17 shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 格式: function f_name() { command } 函数必须要放在最前面 示例1 #!/bin/bash input() { echo $1 $2 $# $0 } input 1 a b $# 参数的个数 $0 参数的名字 函数也支持使用参数 使用方法: sh fun1.sh 参数 参数2 示例2 #!/bin/bash sum() { s=$[$1+$2] echo $s } sum 1 2 示例3 centos6 #!/bin/bash ip() { ifconfig |grep -A1 "$1 " |tail -1 |awk '{print $2}'|awk -F':' '{print $2}' } read -p "Please input the eth name: " e myip=`ip $e` echo "$e address is $myip" centos7 #!/bin/bash ip() { ifconfig |grep -A1 "$1: " | tail -1 | awk '/inet/ {print $2}' } read -p "Please input the eth name:

使用python的subprocess模块调用linux系统命令

我与影子孤独终老i 提交于 2019-11-27 10:31:05
subprocess模块主要有call()、check_call()、check_output()、Popen()函数,简要描述如下: Main API ======== call(...): Runs a command, waits for it to complete, then returns the return code. check_call(...): Same as call() but raises CalledProcessError() if return code is not 0 check_output(...): Same as check_call() but returns the contents of stdout instead of a return code Popen(...): A class for flexibly executing a command in a new process Constants --------- PIPE: Special value that indicates a pipe should be created STDOUT: Special value that indicates that stderr should go to stdout 下面开始介绍subprocess函数的使用方法。

Shell:Day05.笔记

烂漫一生 提交于 2019-11-27 10:20:38
交互输入与for语句 1、交互输入 read Python中用input()函数,进行输入; read命令同时可以定义多个变量值;而输入的内容默认以空格为分隔符,将值输入到对应的变量中; 如果默认值过多,最后所有的变量则为空值; 如果默认值过少,多余的变量则为空值; 示例: read a b c aa bb cc read如何输入: echo "请输入一个目录:" 我们需要 echo -n 取消换行符号 echo "请输入一个目录:";read 变量 请输入一个目录:\etc 常用参数: -p read -p "请输入一个目录:" 变量 -t 定义超时时间 read -t 5 -p "请输入一个目录:" 变量 脚本默认值 [-n $filename] && filename="why" 输入内容----------------------------------- | | 输入是否正确--------- 没有输入------------------ | | | | 正确 不正确,给提示 提示必须输入 给出默认值 练习:输入一个设备文件,输出这个设备文件的基本信息; #!/bin/bash # read -t 5 -p "输入一个设备文件名:" devname [ -z $devname ] && fdisk -l && exit 1 if [ -b /dev/$devname ]