shell函数

shell脚本基础

帅比萌擦擦* 提交于 2020-01-31 09:04:55
shell简介:shell是一种脚本语言,可以使用逻辑判断、循环等语法,可以自定义函数,是系统命令的集合 文章目录 shell脚本结构和执行方法 date命令的用法 shell中变量的用法 shell逻辑判断语法 if判断文件或目录的属性 if判断的一些特殊用法 shell中case判断用法 for、while循环 break、continue、exit shell中的函数 shell中的数组 shell脚本结构和执行方法 1.shell脚本开头需要加#!/bin/bash 2.以#开头的行作为注释 3.脚本的名字以.sh结尾,用于区分这是一个shell脚本 4.执行方法有两种: 1)bash test.sh 2)./test.sh #第二种执行方式需要有执行权限(chmod +x test.sh) 5.查看脚本执行过程:bash -x test.sh 6.查看脚本是否语法错误:bash -n test.sh #bash可以使用sh命令代替(在/usr/bin目录下,sh是bash的软连接文件) date命令的用法 年月日: [root@linux ~]# date 2019年 11月 19日 星期二 16:20:04 CST [root@linux ~]# date +%Y-%m-%d 2019-11-19 [root@linux ~]# date +%Y 2019 [root

python调用shell命令

时光怂恿深爱的人放手 提交于 2020-01-29 07:18:01
1.1 os.system(command) 在一个子shell中运行command命令,并 返回command命令执行完毕后的退出状态 。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。 1.2 os.popen(command,mode) 打开一个与command进程之间的管道。这个函数的 返回值是一个文件对象 ,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。 os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。 1.3 commands.getstatusoutput(command)   使用 commands.getstatusoutput 函数执行command命令并 返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果 。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。 实例: >>>import commands >

模块二、shell脚本逻辑结构

核能气质少年 提交于 2020-01-29 01:19:23
七、if结构条件句知识与实践 (一)if条件句单双分支语法 1、单分支 if 条件 then 指令 fi 2、双分支 if 条件 then 指令 else 指令集2 fi (二)if条件句多分支语句 if 条件1 then 指令1 elif 条件2 then 指令2 elif 条件3 then 指令3 else 指令4 fi 实例: 如果不存在目录/backup,则创建。 [root@centos6-kvm3 scripts]# cat 07-01.sh #!/bin/bash path="/backup" [ -d $path ] || mkdir $path -p if [ -d $path ] then : else mkdir $path -p fi if [ !-d $path] then mkdir $path -p fi [root@centos6-kvm3 scripts]# 开发shell脚本判断内存是否充足,如果小于100,提示不足,如果大于100提示充足。 [root@centos6-kvm3 scripts]# cat 07-02.sh #!/bin/bash mem=`free -m | awk 'NR==3{print $NF}'` if [ $mem -lt 100 ] then echo "内存不充足!" else echo "内存充足!" fi

Linux Shell常用技巧(五)

不打扰是莪最后的温柔 提交于 2020-01-28 19:25:40
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

python执行使用shell命令方法

落花浮王杯 提交于 2020-01-28 14:10:00
1. os.system(shell_command) 直接在终端输出执行结果,返回执行状态0,1 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果command有执行内容,会在标准输出显示。这实际上是使用C标准库函数system()实现的。 缺点:这个函数在执行command命令时需要重新打开一个终端,并且 无法保存command命令的执行结果 。 os.system('cat /etc/passwdqc.conf') 2. os.popen() 打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。 os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。 tmp = os.popen('ls -l *').readlines() 3. commands.getstatusoutput(command) 使用commands.getstatusoutput(command)函数执行command命令并返回一个元组(status,output)

shell脚本实现颜色函数传参

妖精的绣舞 提交于 2020-01-28 05:20:48
1、编写颜色脚本 echo ' #!/bin/bash echo -e "1、\033[30m 黑色字 \033[0m" echo -e "2、\033[31m 红色字 \033[0m" echo -e "3、\033[32m 绿色字 \033[0m" echo -e "4、\033[33m 黄色字 \033[0m" echo -e "5、\033[34m 蓝色字 \033[0m" echo -e "6、\033[35m 紫色字 \033[0m" echo -e "7、\033[36m 天蓝字 \033[0m" echo -e "8、\033[37m 白色字 \033[0m" read -ep "请输入内容:" nei read -ep "请输入颜色:" yan gaojun() { case $1 in 1) echo -e "\033[30m $nei \033[0m" ;; 2) echo -e "\033[31m $nei \033[0m" ;; 3) echo -e "\033[32m $nei \033[0m" ;; 4) echo -e "\033[33m $nei \033[0m" ;; 5) echo -e "\033[34m $nei \033[0m" ;; 6) echo -e "\033[35m $nei \033[0m" ;; 7) echo -e "

Linux Shell常用技巧(五)

ⅰ亾dé卋堺 提交于 2020-01-28 04:53:15
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

shell获取函数的返回值

巧了我就是萌 提交于 2020-01-27 07:57:19
背景: 定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数。shell和其他语言的函数返回值还是差别挺大的。 定义一个函数 functionname(){ 操作内容 echo 输出内容 return 返回值 #返回值可有可不有 } 获得函数的返回值 1.函数默认是将标准输出传递出来,不是返回值。 所以如果直接调用functionname,实际上是将输出传递回来 例如: a=`functionname` 将函数functionname的标准输出传递给a 2.调用函数不需要加(),直接写函数名就可以 functionname 3.使用$?接收上一程序的返回值状态,也就是return的值 functionname echo $? 这里输出的是函数的返回值 4.函数的返回值一般是0和1,表示成功和失败,如果一定要返回其他整数,定义一个全局变量,在函数中改变它 遇到的问题: 将函数返回值赋值时报错: return: diffrentcluster: numeric argument required 虽然不影响使用,但看着总是不好,查了一下说shell的函数默认是返回0和1来表示是否成功的,如果一定要返回值的话,可以在函数外定义一个全局变量,然后在函数中赋值这个变量。这样调用函数后,全局变量就变了,达到同样的效果 例如:通过函数增加num值 #!/bin/sh num

python调用shell命令

≯℡__Kan透↙ 提交于 2020-01-27 07:28:40
在 python 程序中调用 shell 命令 1. os.system(command) 此函数会启动子进程,在子进程中执行 command ,并返回 command 命令执行完毕后的退出状态,如果 command 有执行内容,会在标准输出显示。这实际上是使用 C 标准库函数 system() 实现的。 缺点:这个函数在执行 command 命令时需要重新打开一个终端,并且无法保存 command 命令的执行结果。 实例: os.system('ls -l *') 2. os.popen(command,mode) 打开一个与 command 进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写 ( 由 mode 决定, mode 默认是 ’r') 。如果 mode 为 ’r' ,可以使用此函数的返回值调用 read() 来获取 command 命令的执行结果。 os.system(cmd) 或 os.popen(cmd) ,前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。 实例: tmp = os.popen('ls -l *').readlines() 3. commands.getstatusoutput(command)   使用 os.popen() 函数执行 command 命令并返回一个元组 (status

Linux Shell 函数返回值

那年仲夏 提交于 2020-01-26 17:46:14
Shell函数返回值,常用的两种方式: return , echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。 示例: #!/bin/sh function test() { echo "arg1 = $1" if [ $1 = "1" ] ;then return 1 else return 0 fi } echo echo "test 1" test 1 echo $? # print return result echo echo "test 0" test 0 echo $? # print return result echo echo "test 2" test 2 echo $? # print return result 输出结果为: test 1 arg1 = 1 1 test 0 arg1 = 0 0 test 2 arg1 = 2 0 先定义了一个函数test,根据它输入的参数是否为1来return 1或者return 0。 获取函数的返回值通过调用函数,或者最后执行的值获得。 另外,可以直接用函数的返回值用作if的判断。 注意:return只能用来返回整数值,且和c的区别是返回为正确,其他的值为错误。 3) echo 返回值 其实在shell中,函数的返回值有一个非常安全的返回方式