shell函数

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

蹲街弑〆低调 提交于 2020-02-25 12:04:11
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 运行结果: $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara

shell编程基础

纵饮孤独 提交于 2020-02-25 11:35:07
运行Linux程序有三种方法: 1.直接运行(文件具有可执行权限): ./test.sh 2.调用命令解释器执行程序: /bin/bash test.sh 3.使用source执行程序: source test.sh 一个简单的shell程序——test.sh: #! /bin/bash # shell脚本以#!开始,/bin/bash告诉shell应该选择哪个解释器解释这个脚本 cd test echo "Hello" 三种方法均会输出“hello”无疑,但是用pwd查看当前路径是否改变时: keegen@keegensCP:~$ pwd /home/keegen keegen@keegensCP:~$ ./test.sh Hello keegen@keegensCP:~$ pwd /home/keegen keegen@keegensCP:~$ /bin/bash test.sh Hello keegen@keegensCP:~$ pwd /home/keegen keegen@keegensCP:~$ source test.sh Hello keegen@keegensCP:~/test$ pwd /home/keegen/test 可以看出,第三种方法和前面两种方法是不同的,用source执行程序目录发生了改变! Linux shell可执行命令有三种:内建命令

第12章 学习shell脚本

风格不统一 提交于 2020-02-24 12:52:40
12.1 什么是shell脚本 就字面上的意思,即针对shell所写的剧本,shell脚本是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法和命令(也可以是外部命令)写在里面,还能搭配正则表达式、管道命令和数据流重定向等功能,以达到我们需要的处理目的,执行一个“shell脚本”文件,就能一次执行多个命令,shell脚本还提供数组、循环、条件与逻辑判断等功能,用户可以直接用shell来编写程序,而不必使用类似C语言等传统程序语言来编写,shell脚本可以简单地被看成是批处理文件,也可以被说成是程序语言,且由于这个程序语言都是利用shell与相关工具命令,所以不需要编译即可执行 1学习shell脚本的作用 自动化管理:管理一台主机每天要进行的任务有查询日志文件、跟踪流量、监控用户使用主机状态、主机各项硬件设备状态、主机软件更新查询等,你可以每天手动处理这些事情,也可以写个简单的shell脚本,让它来帮你处理每天的任务 帮助管理系统:CentOS6.x以前的版本中系统服务启动的接口是在/etc/init.d/这个目录下,这个目录下所有文件都是脚本文件,另外,包括启动过程也要利用shell脚本来帮忙查询系统的相关设置参数,然后再代入各个服务中,从CentOS7开始,/etc/init.d/这个脚本启动的方式由systemd所替代

学习shell script

≡放荡痞女 提交于 2020-02-22 17:44:39
学习shell script 1.什么是shell script 1.1.编写第一个script程序 1.2.script编程的良好习惯 2.简单范例 2.1.交互式脚本 2.2.随日期变化 2.3.不同的script的执行方式的区别 3.判断指令 3.1.test命令的用法 3.2.脚本文件的默认变量 4.条件判别 4.1.利用 if...then 4.2.利用case...esac判断 4.3.function函数 5.循环loop 5.1. while do done, until do done 5.2. for..do..done 5.3 for...do...done数值处理 1.什么是shell script shell script 就是一种程序化脚本。shell是让用户和系统沟通的一种工具,我们所使用的bash就是shell的一种。而shell script 就是用shell功能来写一个程序。 1.1.编写第一个script程序 第一个程序的功能就是简单输出hello world zhangsan@Aliyun:~$ mkdir script ; cd script zhangsan@Aliyun:~$ vim zhangsan01.sh 1 #!/bin/bash 2 # This is the program show "Hello world" 3 PATH

shell第四天正则

雨燕双飞 提交于 2020-02-21 04:13:08
正则 正则分为 基础正则 , 扩展正则 正则 表达式 解释 示范 . 匹配任意单个字符(必须存在) "ro.t"可以是root,roat。"r…t"可以是root,raet ^ 表示以什么开头 “^#” 匹配以#开头的行 $ 表示以什么结尾 “root$” 表示匹配以root结尾的行 * 匹配前一个字符的一个或多个 可以为0 “a*b” 可以是aab,aaab,b,aaaab .* 表示匹配任意长度的字符 “.*t” 可以是root,boot,beat,以t结尾的 [] 表示范围的一个字符 [0-9]匹配数字,[a-z]匹配小写,[abc]匹配abc三个字符的任意一个 [^] 表示不再范围的一个字符,与[]相反 [^0-9]不匹配数字 ^[^] 匹配不在[]范围里的字符为开头的字符 ^[^A-Z] 表示匹配不以大写字母开头的字符 {n} 匹配前面字符至少n个字符 a{2}表示aaa aaaa aaaaa {n,m} 匹配前面字符至少n个字符,最多m个字符 a{2,4}为aaa,aaaa,aaaaa () 分组 < 锁定单词开头 <r 表示单词开头必须是r ,root,read > 锁定单词结尾 t>表示单词结尾必须是t ,root,about 函数 格式 函数名 () { commands } 例:写一个名叫hello_world的函数,要求输出hello world [ root

linux定义只读变量命令-----readonly

扶醉桌前 提交于 2020-02-20 16:28:51
readonly readonly命令用于定义只读shell变量和shell函数。readonly命令的选项-p可以输出显示系统中所有定义的只读变量。 格式 readonly 【选项】【参数】 选项 -A:指向关联数组 -f:定义只读函数; -a:定义只读数组变量; -p:显示系统中全部只读变量列表。 理解案例 这个命令是到底有什么作用?用一个简单的案例,帮助理解。 首先我们登陆的用户是root [ root@linus ~ ] # who root pts / 0 2020 - 02 - 20 20 : 54 ( 192.168 .1 .11 ) root用户所对应的UID是0 [ root@linus ~ ] # echo $ UID 0 UID也是一个变量,我们尝试一下对其进行更改 [ root@linus ~ ] # UID = 11 - bash : UID : 只读变量 连上帝用户root都无法直接更改,这就是所谓的只读变量。为什么把UID定义成只读变量呢,仔细想一想,如果一个普通用户可以修改自己的UID,那么改成0的话,那岂不是可以拥有root用户权限,这么大的安全风险,当然要避免,所以把UID设置成只读变量。 readonly命令就是用来定义只读变量的。 常用实例 显示全部只读变量 注:是不是对显示的declare前缀很好奇,其实declare也是设置只读变量的命令

经典shell面试题

有些话、适合烂在心里 提交于 2020-02-19 08:46:24
70个经典的 Shell 脚本面试问题 转载自: http://www.imooc.com/article/1131 1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash echo $1 ( LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。) 2) 如何在脚本中使用参数 ? 第一个参数 : $1,第二个参数 : $2 例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ./copy.sh file1.txt /tmp/ cat copy.sh #!/bin/bash cp $1 $2 3) 如何计算传递进来的参数 ? $# 4) 如何在脚本中获取脚本名称 ? $0 5) 如何检查之前的命令是否运行成功 ? $? 6) 如何获取文件的最后一行 ? tail-1 7) 如何获取文件的第一行 ? head-1 8) 如何获取一个文件每一行的第三个元素 ? awk'{print $3}' 9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素 awk'{ if ($1 == "FIND") print $2}' 10) 如何调试 bash 脚本 将 -xv 参数加到 #!/bin/bash 后 例子: #!/bin/bash –xv 11

shell总结

て烟熏妆下的殇ゞ 提交于 2020-02-16 21:21:41
     shell总结    一.学习心得            在学习本阶段shell这一课程时,我对shell有了一个大概的了解。         shell是一门解释性语言,shell语言与高级语言处理的对象不同;它与系统         有着密切的关系,易编写、调试、灵活性较强,但速度低。           既然是心得,那我在这里想说一些心里话。这是我来景航的第n个月         在这n个月中一路磕磕绊绊还是走了过来,不过让我最伤的是我竟然仅仅         在Java web第二阶段就摔了两次在分班考试前我揪心的很,俗话说一个         人不能在同一个地方摔倒三次这也是我心中所担心的。哈哈废话不多说我         还记得我在之前也打听过大数据阶段超级难学,当我真正开始接触Linux的         时候我感觉没什么,但是自从开始学习shell的时候发现并不是那么容易。         我呀不爱说话学习方面一般不敢和别人主动去沟通,哪怕是不会也不愿意         去问老师同学有时候想问却不敢因为我怕别人笑话我。说实话我感觉整体         学习效果并不是太好!能力有待提升。    二.介绍shell           在计算机科学中,shell俗称壳(用来区别于核),是指"为使用者提         供操作界面"的软件(命令解析器)

shell脚本 介绍以及总结

旧时模样 提交于 2020-02-16 20:06:47
shell的历史 shell概况 人想要和操作系统进行交互,传送指令给操作系统,就需要使用到shell。宏义的shell是人与机器交互的页面,它分为两种,一种是有界面的,比如GUI,另外一种是没有界面的,完全是指令操作的(CLI)。我们一般说的shell指的就是命令行界面。 Bourne shell 最早Ken Thompson设计Unix的时候,使用的是命令解释器,命令解释器接受用户的命令,然后解释他们并执行。 后来出现了Bourne shell(通称为sh),顾名思义,就是一个叫Bourne shell创建的。对,它就是现在我们机器上面的/bin/sh这个可执行文件。这个老哥创建的sh一直沿用至今,现在的UNIX操作系统都配置有sh,而且各种新的shell都会向后兼容sh的语法。 Bourne shell 带来了: 脚本可以写在文件里被调用,比如sh a.sh可以执行a.sh里面的shell命令 可以交互或者非交互的方式调用 可以同步执行也可以异步执行 支持输入输出的pipeline,就是管道方式 支持输入输出的重定向,就是现在使用的> 和 >> 提供一系列内置命令 提供流程控制基本的函数和结构 弱类型变量,就是可以直接 a=1,不需要指定a为int 提供本地和全局的变量作用域 脚本执行前不需要编译 去掉goto功能 使用``进行命令执行替换 增加了for~do~done的循环

shell中的函数

梦想的初衷 提交于 2020-02-16 19:11:42
函数:功能, function 作用:代码重用 库:so function: 功能 结构化编程,不能独立运行,需要调用时执行,可以被多次调用 定义一个函数: function FUNCNAME { command } or FUNCNAME ( ) { command } 举例: # ! / bin / bash cat << EOF d | D ) show disk usages m | M ) show memory usages s | S ) show swap usages q | Q ) quit . EOF read - p "Your choice:" CHOICE until [ $ CHOICE == "q" - o $ CHOICE == "Q" ] ; do case $ CHOICE in d | D ) df - h ; ; m | M ) free - m | grep "^Mem" ; ; s | S ) free - m | grep "^Swap" ; ; * ) cat << EOF d | D ) show disk usages m | M ) show memory usages s | S ) show swap usages q | Q ) quit EOF read - p "Your choice:" CHOICE esac