shell编程

shell编程(五)之函数

。_饼干妹妹 提交于 2020-02-05 12:09:53
function:函数 函数只有被调用才会执行 如何调用:给定函数名   函数名出现的地方,会被自动替换为函数代码 函数的生命周期:被调用时创建,返回时终止 return命令返回自定义状态结果   0:成功   1-255:失败 语法一:   function f_name {   ...函数体... } 语法二: f_name(){   ...函数体... } 练习: 写一个脚本,完成如下要求 1.脚本可接受参数:start,stop,restart,status 2.如果参数非此四者之一,提示使用格式后报错退出 3.如果是start,则创建/var/lock/subsys/SCRIPT_NAME,并显示启动成功 考虑: 如果事先已经启动过一次,该如何处理 4.如果是stop,则删除/var/lock/subsys/SCRIPT_NAME,并显示停止完成 考虑: 如果事先已然停止过了,该如何处理 5 如果是restart,则先stop,在start 考虑:如果本来没有start,如何处理 6.如果是status,则: 如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示”SCRIPT_NAME is running“ 如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示”SCRIPT_NAME is stopped“ #!/bin

【shell】awk可编程过滤器

随声附和 提交于 2020-02-05 01:32:09
目录 简介 1.标准结构 1.1 模式 1.2 动作 2.常用内置变量 3.支持运算符 4.例题 4.1.按行逆序打印 4.2.转置文件 4.3.输出所有子目录信息 4.4.输出第1行以后的行 4.5.列出当前目录下文件名及文件大小 简介 awk 名称由 Alfred A ho (龙书作者;哥伦比亚大学教授)、 Peter J. W einberger(原贝尔实验室科学家;现就职于Google)、Brian K ernighan(顶级技术作家;普林斯顿大学教授)3位组合而来。 awk是一个解释型的、标准的Unix过滤器程序(programmable filter)语言,擅长结构化文本数据处理及报表生成,且执行速度快。 awk可以 读标准输入并写标准输出 ,因此符合经典 过滤器模式 的程序定义,它的 文本过滤功能 需要通过用户自己编程去实现,因此更加强大、丰富、灵活。 1.标准结构 awk程序除了直接命令行使用,还可以协作awk程序文件,以 -f 引用 结构 pattern{action} 缺省 pattern 或者action 模式 过滤每一行的pattern 默认模式:*匹配左右 动作 对每一行的做的操作,如print打印到标准输出 默认动作:打印行 1.1 模式 awk action file.txt awk '{print $0}' file.txt #打印每一行 awk

shell编程(一)之变量

情到浓时终转凉″ 提交于 2020-02-04 20:04:00
变量:命名的内存空间 bash的变量种类: 根据变量的生效范围等标准 本地变量: 生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效 环境变量: 生效范围为当前shell进程及其子进程 局部变量: 生效范围为当前shell进程中某代码片段(通常指函数) 位置变量: $1,$2...来表示,用于让脚本在脚本代码中调用通过命令行传输给它的参数 特殊变量: $?、$0, $*, $@, $# 变量命名法则: 1. 不能使用程序中的保留字:if,for 2. 只能使用数字、字母及下划线,且不能以数字开头 3. 见名知意 只读变量: readly name declare -r name 本地变量: 变量赋值:name='value' 可以使用引用: value: 1. 可以是直接字串,name="username" 2. 变量引用: name="$username" 3.命令引用: name=`COMMAND`,name=$(COMMAND) 变量引用:${name}, $name "": 弱引用,其中的变量引用会被替换为变量值 '': 强引用,其中的变量引用不会被替换为变量值,而保持原字符串 显示已定义的所有变量 set 销毁变量:unset name 环境变量: 变量声明、赋值 export name=VALUE

Linux Bash语法总结

喜欢而已 提交于 2020-02-04 12:05:46
在学习Linux的过程中,无可避免的会碰到一个既让人喜欢、又令人十分头疼的神奇的东西——bash编程,也就是shell脚本。那么什么是shell脚本呢?shell是一个命令语言解释器,而shell脚本则是Linux命令的集合,按照预设的顺序依次解释执行,来完成特定的、较复杂的系统管理任务,类似于windows中的批处理文件。本篇博文主要介绍bash编程的基础语法讲解。 一、bash编程之变量 1)bash变量类别 本地变量:只对当前shelll进程有效的变量,对其他shell进程无效,包含当前shell进程的子进程。 2)变量赋值: 即向变量的存储空间保存数据,如下 [root@localhost ~]# VAR_NAME=VALUE 3)变量的引用 格式为:${VAR_NAME} " ":弱引用,里面的变量会被替换; ' ':强引用,里面的所有字符都是字面量,直接输出,所见即所得; 4)环境变量 对当前shell进程及其子shell有效,对其他的shell进程无效! 定义:VAR_NAME=VALUE 导出:export VAR_NAME 撤销变量:unset VAR_NAME 只读变量:readonly VAR_NAME 5)局部变量 在shell脚本中定义,只可以在shell脚本中使用! 6)位置变量 $1,$2...,${10} 7)特殊变量 shell对一些参数做特殊处理

shell之定义变量

*爱你&永不变心* 提交于 2020-02-03 00:36:48
变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。 这意味着,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。例如在C语言或者 C++ 中,变量分为整数、小数、字符串、布尔等多种类型。 当然,如果有必要,你也可以使用 Shell declare 关键字显式定义变量的类型,但在一般情况下没有这个需求,Shell 开发者在编写代码时自行注意值的类型即可 declare 和 typeset 都是 Shell 内建命令,它们的用法相同,都用来设置变量的属性。不过 typeset 已经被弃用了,建议使用 declare 代替 1. 两个声明变量的示例 (1)将变量声明为整数并进行计算 [root@server1 declare]# cat 1.sh #!/bin/bash declare -i m n ret #将多个变量声明为整数 m=10 n=30 ret=$m+$n echo $ret (2)将变量定义为只读变量 [root@server1 declare]# declare -r

开篇,引子

折月煮酒 提交于 2020-02-02 17:56:41
工作这几年,积累了很多提高工作效率的方法和软件。 How to work smart这个系列可能会写几篇,这篇作为引子,先理一下思路。 outline linux shell script linux shell script概述,争取不照搬网上随处可见的教程,而是深入的聊一下我对linux shell“编程”的理解 基本概念: 字符串、if、for、while、backgroup,参数 图书推荐 我对linux shell的理解 常用软件(cmd): htop, fish shell, zsh shell, tree, pstree,putty find grep awk sed tmux mount ramfs/tmpfs work smart at a particular situaiton 获取进程 secureCRT应用 global option save log automatically secureCRT script based on python The custom button feature VNC to be a cool programmer(teach you how to ZhuangBility) cmatrix cowsay record what I have done in using git-svn 希望我春节前能写完 来源:

2020/2/2

柔情痞子 提交于 2020-02-02 15:17:37
今日学习 1.linux 3h 2.EM算法 3h 3.CodeWars刷题 2h 4。阅读 1h linux 权限管理 ACL权限:解决用户不足的问题 shell编程 后缀 .sh 运行 1.更改权限后 ./test.sh 2./bin/sh test.sh 3.sh test.sh 4.bash test.sh 5.dash test.sh bash, dash, sh 区别 变量命名 变量名和等号之间不能有空格 来源: https://www.cnblogs.com/hichens/p/12252131.html

shell编程之条件语句

走远了吗. 提交于 2020-02-02 04:07:47
Shell编程之条件语句 文件测试 文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。 -d 测试是否为目录(Directory) -e 测试目录或文件是否存在(Exist) -f 测试是否为文件(File) -r 测试当前用户是否有权限读取(Read) -w 测试当前用户是否有权限写入(Write) -x 测试是否设置有可执行(Excute)权限 举例:判断/mnt/cdrom目录是否存在? # test -e /mnt/cdrom # echo $? 0 test命令中用于判断文件的选项有很多,从文件个数上可分为单个文件的判断和两个文件之间的比较。其中判断单个文件最常用的选项就-f选项,在比较两个文件时,常用的选项有: -nt 判断文件A是否比文件B新 -ot 判断文件A是否比文件B旧 -ef 判断两个文件是否为同一个文件,用来判断两个文件是否指向同一个inode 举例: #touch a #touch b #test a -ot b&&echo “YES” || echo “NO” #[ a -ot b ]&&echo “YES” || echo “NO” #test a -ef b &&echo “YES” || echo “NO” #ln a c #test

shell、shell脚本基础案例、shell变量

安稳与你 提交于 2020-01-31 20:49:05
一、shell是用户与linux操作系统之间的一个命令解释器,shell是操作系统的最外层,shell可以合并编程语言以控制进程和文件,以及启动和控制其他程序。 不同的shell语言的语法有所不同,一般不能交换使用,最长用的shell是bash 二、shell脚本案例: hello.sh #!/bin/bash #This is my Firest shell #by author xxx 2020 echo "hello world!" #!/bin/bash 定义该脚本所使用的shell类型,添加执行权限后(chmod +x hello.sh)可以通过 ./hello.sh 执行 也可通过sh hello.sh执行 #表示注释 三、shell变量: shell为弱类型语言,定义变量不需要声明类型,通过“=”为变量赋值,通过echo $变量名进行查看,如a=123;echo $a shell变量分为系统变量、环境变量、用户变量 系统变量在对参数判断和命令返回值判断时使用,如$?,[ 2 -gt 1 ]&&echo 'yes'||echo 'no' 环境变量主要是程序运行时需要设置,输入env查看,可通过~/.bash_profile 配置,或将局部变量升级为环境变量,a=123;export a 用户变量又称为局部变量,多在shell脚本内或临时使用 shell编程常见系统变量为

shell一文入门通

北战南征 提交于 2020-01-31 09:03:54
简单来说“Shell编程就是对一堆Linux命令的逻辑化处理”。 W3Cschool 上的一篇文章是这样介绍 Shell的 hello world 学习任何一门编程语言第一件事就是输出HelloWord了!下面我会从新建文件到shell代码编写来说下Shell 编程如何输出Hello World。 (1)新建一个文件 helloworld.sh : touch helloworld.sh ,扩展名为 sh(sh代表Shell)(扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了) (2) 使脚本具有执行权限: chmod +x helloworld.sh (3) 使用 vim 命令修改helloworld.sh文件: vim helloworld.sh (vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)) helloworld.sh 内容如下: #!/bin/bash #第一个shell小程序,echo 是linux中的输出命令。 echo "helloworld!" shell中 # 符号表示注释。 shell 的第一行比较特殊,一般都会以