shell函数

Shell编程(4)

℡╲_俬逩灬. 提交于 2019-11-28 10:15:01
shell函数 shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数。给这段代码起个名字称为函数名,后续可以直接调用该段代码。 格式 func() { #指定函数名 command #函数体 } 实例1: #!/bin/bash func() { echo "This is a function." } func # bash test.sh This is a function. Shell 函数很简单,函数名后跟双括号,再跟双大括号。通过函数名直接调用,不加小括号。 示例 2:函数返回值 #!/bin/bash func() { VAR=$((1+1)) return $VAR echo "This is a function." } func echo $? # bash test.sh 2 return 在函数中定义状态返回值, 返回并终止函数 ,但返回的只能是 0-255 的数字,类似于 exit。 示例 3:函数传参 #!/bin/bash func() { echo "Hello $1" } func world # bash test.sh Hello world 通过 Shell 位置参数给函数传参。 shell正则表达式 正则表达式在每种语言中都会有,功能就是匹配符合你预期要求的字符串。 Shell 正则表达式分为两种:

shell编程-大杂烩

谁说胖子不能爱 提交于 2019-11-28 08:22:20
shell学习 不退出vim执行 ::!bash change_ip.sh 10.190.172.6 10.190.172.7 VIM 中执行 Shell 命令,有以下几种形式: 1. :!command 不退出 vim ,并执行 shell 命令 command ,将命令输出显示在 vim 的命令区域,不会改变当前编辑的文件的内容 例如: :!ls -l , 如果你正在编辑一个脚本 ,vim ErrorMail.sh, 代码基本写完,你想测试一下你不用保存退出,你可以先保存 :w! 然后再执行这个脚本 :!sh ErrorMai.sh. 此时你并没有退出 vim 编辑器,返回结果后,你只要回车一下可以继续编辑 2. :r!command 将 shell 命令 command 的结果插入到当前行的下一行 . 例如: :r!date ,读取系统时间并插入到当前行的下一行。 3. :起始行号,结束行号 !command 将起始行号和结束行号指定的范围中的内容输入到 shell 命令 command 处理,并将处理结果替换起始行号和结束行号指定的范围中的内容 . 例如 :62,72 !sort ,将 62 行到 72 行的内容进行排序 , 可以只指定起始行,例如 :62 !tr [a-z] [A-Z] ,将 62 行的小写字母转为大写字母 linux shell 脚本输入参数解析 #!

shell笔记_函数

我的未来我决定 提交于 2019-11-28 08:02:42
函数: 1、函数介绍function 为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能。 且,这个功能在后面的代码中,会重复调用; def 2、函数的语法格式 函数的写法格式: function check_cpu { cat /proc/cpuinfo } ls /etc/ check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】 *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、函数中的变量 本地变量 local 变量名=xxx 本地变量只在本函数内部生效 局部变量 脚本内部的变量 环境变量

shell脚本不用data函数实现日期查询

[亡魂溺海] 提交于 2019-11-28 07:29:24
shell脚本实现查询指定日期的前N天或后N天 1 #!/bin/bash 2 func(){ 3 read -p "请输入年月日(格式:2019-01-01): " date 4 if echo $date |grep -Eq "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}" && date -d $date +%Y%m%d >/dev/null 2>&1 #判断输入的年月日格式是否正确 5 then 6 year=${date:0:4} 7 month=${date:5:2} 8 day=${date:8:2} 9 read -p "请输入1(向前查找)或2(向后查找):" num 10 #判断输入是否正确 11 if [[ "$num" =~ ^[1,2]{1}+$ ]];then 12 calculate #如果 13 else 14 echo "请按要求输入!" 15 func 16 fi 17 else 18 echo '请输入正确格式的日期!' 19 func 20 fi 21 } 22 #获取月份对应的天数 23 getDay(){ 24 case $2 in 25 1|3|5|7|8:|10|12) day=31;; 26 4|6|9|11) day=30;; 27 2) 28 if [ `expr $1 % 4` -eq 0 -a `expr

shell

吃可爱长大的小学妹 提交于 2019-11-28 07:24:53
Shell Shell脚本入门 Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件, Shell就是一个命令行解释器,Shell本身是一个用C语言编写的程序, Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。shell脚本脚本文件通常以.sh作为后缀名,第一行以#!开头指定执行脚本的程序: #!/usr/bin/bash #是shell脚本中的行注释符。 这里我们来使用最常用的bash 1. 新建文件hello_shell $ vi hello_shell 2. 输入Shello命令 #! /bin/bash echo "Hello Shell!" 3 、保存 echo是一个输出命令,就是输出一句话 4. 赋权限 我们要让系统知道我们刚才新建的文件是可执行的,所以我们要赋给其可执行的权限 现在我们的文件是不可执行的,只有读写权限: 下面是赋权 $ chmod 711 hello_shell 5. 执行 ./ 表示再当前目录查找命令,如果什么都不加的话,系统默认会在PATH里寻找,而的当前目录通常不在PATH里,所以找不到命令。 通常有三种执行脚本的方式: 1、sh start.sh: 在终端中创建一个sh子进程执行脚本, 执行者需要拥有脚本的读权限

Shell:Day09-2.笔记

删除回忆录丶 提交于 2019-11-28 06:15:38
4、模式匹配(地址定界) 1、空值,没有定义,默认就将文件中所有的行,放入awk进行循环 2、对固定的 1,3 行进行操作 sed -n '1,3p' /etc/passwd awk '1,3{print}' /etc/passwd //awk默认不支持使用 1-3 1,3 等等,这样数值的直接写法; awk 'NR>=1&&NR<=3{print}' /etc/passwd //通过NR变量来指定 3、/pat1/ sed -n /pat1/p /etc/passwd awk '/r..ter/{print}' /etc/passwd 4、/pat1/,/pat2/ 第一次匹配pat1到第一次匹配pat2,之间的行 练习:判断/^r..ter/,/^user.*\>/之间的行的用户,是bash的用户,并显示用户的用户名,和UID ======================================== ?shell: for i in `awk '/^r..ter/,/^user.*\>/{print $NF}' /etc/passwd`;do if [[ $i == "/bin/bash" ]];then echo `` fi done while line;do if [[ "/bin/bash" == `awk -F: '{print $NF}' $line` ]]

shell 中的变量

混江龙づ霸主 提交于 2019-11-28 05:43:15
变量的定义 变量即在程序运行过程中它的值是允许改变的量。 变量是用一串固定的字符来标示不固定的值的一种方法。 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息。 在 shell 中变量是不能永久保存在系统中的,必须在文件中声明。 变量的种类及定义方法 在 shell 中变量分为环境级变量,用户级变量,系统级变量: 环境级变量只在当前 shell 中生效, shell 关闭变量丢失 未声明之前,只在当前shell中生效: 声明:export redhat=1,声明之后,在所有shell中生效: 用户级变量写在用户的骨文件中,只针对当前用户生效 su - 切换用户,读取bashrc和profile,读取用户环境 profile 环境信息 bash shell配置 su 切换用户,只读取bash,不读取用户环境 vim ~/.bash_profile export a=10 未声明之前,环境文件中写的配置不起作用: 声明之后,只对应用当前用户环境的用户生效: source ~/.bash_profile 要想删除用户级变量,只需将环境文件中的配置信息删掉,之后再声明一下,就可以重新定义变量: 系统级变量被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效 vim /etc

shell脚本day07-函数

假装没事ソ 提交于 2019-11-28 03:56:51
函数:写一个代码快用来重复调用 一、函数的写法格式  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   参数如果在函数体外面可以直接使用 二、变量   local本地变量   loacl i=1   如果在函数体外也定义了一个相同的变量,不生效   扩展:source/bash/chmod+x全路径 【父子进程】 三、return   结束函数体执行   和exit的区别   return和exit都指定的返回值 0代表执行成功,1-255代表执行失败   return只用于函数体中; 四、迭代   迭代必须要指定初始值 来源: https://www.cnblogs.com/ljx1/p/11390752.html

Linux shell基础

余生颓废 提交于 2019-11-28 03:50:41
shell基础 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容。只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础。 1.2 学好Shell编程所需的基础知识 能够熟练使用vim编辑器,熟悉SSH终端 有一定的Linux命令基础,至少需要掌握80个以上Linux常用命令,并能够熟练使用它。 要熟练掌握Linux正则表达式及三剑客命令(grep,sed,awk) 1.3 如何学好Shel编程 学好Shel编程的 核心 :多练-->多思考-->再练-->再思考,坚持如此循环即可! 新手大忌 :不可拿来主义,可以模仿,但是要自己嚼烂了吃下去,否则会闹肚子。 格言 :你觉得会了并不一定会了,你认为对的并不一定对的。 大家要勤动手,自行完成学习笔记和代码的书写。通过每一个小目标培养自己的兴趣以及成就感 2,Shell脚本入门 2.1 什么是Shell Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话

Linux内置命令

强颜欢笑 提交于 2019-11-28 01:33:30
主要Shell内置命令 Shell有很多内置在其源代码中的命令。这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快。不同的Shell内置命令有所不同。 A.2.1 bash内置命令 .:执行当前进程环境中的程序。同source。 . file:dot命令从文件file中读取命令并执行。 : 空操作,返回退出状态0。 alias:显示和创建已有命令的别名。 bg:把作业放到后台。 bind:显示当前关键字与函数的绑定情况,或将关键字与readline函数或宏进行绑定。 break:从最内层循环跳出。 builtin [sh-builtin [args]]:运行一个内置Shell命令,并传送参数,返回退出状态0。当一个函数与一个内置命令同名时,该命令将很有用。 cd [arg]:改变目录,如果不带参数,则回到主目录,带参数则切换到参数所指的目录。 command comand [arg]:即使有同名函数,仍然执行该命令。也就是说,跳过函数查找。 declare [var]:显示所有变量,或用可选属性声明变量。 dirs:显示当前记录的目录(pushd的结果)。 disown:从作业表中删除一个活动作业。 echo [args]:显示args并换行。 enable:启用或禁用Shell内置的命令。 eval [args]:把args读入Shell,并执行产生的命令。