shell函数

shell脚本-编程原理

北城以北 提交于 2020-01-26 04:23:47
1、 shell脚本语言介绍 优点:调用os(操作系统)的命令行,来实现所有功能 缺点:没有库调用(区分python) 变量:全局变量、局部变量、本地变量、传参   /etc/shells/ --查看当前系统支持的shell程序   echo $SHELL -- 查看当前会话的shell程序   /etc/passwd -- 制定了用户默认支持的shell程序 shell的执行: 1)bash命令来执行脚本 -n 查看shell脚本的逻辑错误(单词查不出) -x 逐行显示执行的脚本程序(方便排错) 2)授权 chmod +x filename.sh 使用全路径执行脚本,即可./filename.sh 2、变量 环境变量($HOME、$SHELL、) 局部变量 declare命令 -- 定义变量类型 本地变量 local在函数中使用 变量类型: 数值型:int 整型、浮点型(float)、布尔值(true/false) 字符串: 1)普通字符及字符串 2)数组 编程语言的分类: 强类型语言 -- 数值必须被定义,才能进行处理或运算 弱类型语言 -- 编程语言可以自动识别变量类型 【多态--一个数据具有多个属性,而最后使用的属性取决于和他进行运算事物数据】 传参 $? ---上一条命令执行状态(0 正确 1-255错误) $1 $2 .. ${10} --- 命令后面传入脚本的数据

第一个shell脚本的编写+脚本的运行方式+which命令

会有一股神秘感。 提交于 2020-01-25 02:55:33
文章目录 which和/etc/shells文件 向用户输出"hello shell" 接收用户的输入数据 在新进程中运行shell脚本 在当前进程中运行shell脚本 soucre命令(.命令) source用法( 将自身脚本中的变量值或函数等的返回值返回到当前shell) which和/etc/shells文件 which命令的功能: which命令用于查找并显示给定命令的绝对路径, 环境变量$PATH中保存了查找命令时需要遍历的目录。 which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 使用which命令,就可以看到某个系统命令是否存在, 以及执行的到底是哪一个位置的命令。 向用户输出"hello shell" 接收用户的输入数据 从终端读取用户输入的数据 并赋值给preson变量。 read命令来从标准输入中读取用户输入的数据。 在新进程中运行shell脚本 在前文中,我们介绍了四种运行shell脚本的方法,它们既有联系又有区别。联系就是都可以运行一个shell脚本。区别如下: 以下命令均是在新进程中运行shell脚本 1. sh xxx . sh 2. chmod + x xxx . sh #将shell脚本作为程序执行 . / xxx . sh 上述命令均需要在脚本文件中指定shell解释器 3. / bin / bash xxx . sh

shell脚本day03-编程原理

隐身守侯 提交于 2020-01-23 21:35:09
一、编程介绍   (计算机只能识别二进制指令)   早期编程:驱动和硬件默认不能使用,但不同厂家设备之间需要进行指令沟通,我们需要驱动来进行翻译;更趋紧与硬件开发的工程师,要学习汇编语言,而汇编语言被厂家所限制。C,C++的底层就是汇编语言 现在编程基于高级语言,以及超高级语言,更好的让程序员能够实现汇报功能。高级语言、超高级语言需要翻译成计算机可读的语言(二进制指令) 汇编语言的分类 解释型---逐行解释,逐行执行 shell python java 编译型---一次编译,全部行 C C++ C# java 面向对象---侧重于数据的编程语言 面向过程---侧重于指令 编程语言的执行方式:       【按行执行】 顺序执行 循环执行---for(遍历) while(循环条件) until(和while相反) 选择执行---分支 if case 二、shell脚本语言介绍   shell语句是面向过程的,侧重于指令集。     优点:调用os(操作系统)的命令行,来实现所有功能;   缺点:没有库调用(区别于python)   shell语句的基本组成成分: 命令(重点!) 变量(全局变量、局部变量、本地变量) 逻辑关系 数据-变量(转参)   shell没有内嵌函数,没有函数库调用,没有调用库的接口 三、shell的第一句话(重要)    #!/bin/bash /

shell--创建函数

百般思念 提交于 2020-01-22 15:55:37
shell--创建函数 知识体系: #创建函数 #使用参数 #共享函数 shell脚本代码可以封装在函数内,而函数可以在脚本任意处使用,由此减少大段代码的重复编写。 1、基本脚本函数 函数是被赋予名称的脚本代码块,可以在代码的任意位置使用。当需要调用代码块的时候,只需引用代码块被赋予的函数名即可。 1.1、创建函数 在bash shell脚本中创建函数可以使用两种方式: *关键字function,基本格式为: function name{ commands } *()方式: name() { commands } 下面就对这两种方式举例创建. 1.2、使用函数 如下采用上面创建函数的两种方式举例: [root@wzp ~]# chmod u+x 7.1test [root@wzp ~]# cat 7.1test #!/bin/bash function fun1 { echo "this is the first function" } fun1 fun2() { echo "this is the second function" } fun2 [root@wzp ~]# ./7.1test this is the first function this is the second function 这里头有两个函数名:fun1和fun2,对应两个函数执行后显示不同结果。

shell基础之变量及表达式

柔情痞子 提交于 2020-01-22 01:49:32
本节内容 1. shell 变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 10. 退出状态 11. shell 表达式与运算符 11.1 条件表达式 11.2 整数比较符 11.3 字符串比较符 11.4 文件测试 11.5 布尔运算符 11.6 逻辑判断符 11.7 整数运算 11.8 其他运算工具 11.9 shell 括号用途总结 一、 shell 变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以, Shell 变量也遵循这个规则。 在 Bash shell 中,每一个变量的值都是字符串, 无论你给变量赋值时有没有使用引号,值都会以 字符串 的形式存储 。这意味着, Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。 二、定义变量 Shell 支持以下三种定义变量的方式: variable= value variable= 'value' variable= "value" variable 是变量名, value 是赋给变量的值。如果 value 不包含任何空白符(例如空格、 Tab

shell编程之变量赋值

*爱你&永不变心* 提交于 2020-01-22 00:52:24
1.变量赋值: name=lbg 等号前后不能有空格 name="Lebron James" 变量值中有空格要用双引号 echo ${name} 用${}更保险 shopt -s -o nounset 设置“先声明再使用” 2.取消变量: unset 释放变量和函数的内存 3.位置参数: ${n}:输入的第n个参数($0表示脚本名字) $#:输入参数的数量 $@:输入的所有参数 $!:输入的最后一个参数 $?:上一个命令的返回值(用于在脚本中判断之前命令的执行状态,任何非0的返回都表示非正常执行) 4.数组: declare -a Array=('ladawn' 'lbg' 'lbj') 5.只读变量: declare -r N=10 readonly N=10 6.函数中的变量: 若不声明local,则函数中的变量也为全局变量。 若声明为local(local var=200),则变量的作用域只在函数内。 7.引用: 双引号:弱引用,特殊符号($、\、`)仍然解析为特殊的意义。 单引号:强引用,所有的字符都是字面意思,不再有特殊意义。 8.命令替换: A=$(data)或者A=`data`,表示将data命令的输出结果取出,赋给A 9.bc运算: 用于浮点数计算输出。通过管道使用。 tatal=$(echo "34/15" | bc) 9.数值运算: let "sum+=1"

Linux shell 特殊变量解析

二次信任 提交于 2020-01-22 00:29:07
文章目录 一、$0 二、\$1~n 三、$# 四、$* 五、$@ 六、$$ 七、$! 八、$? 九、$- 十、举个例子 Shell 变量的命名规范和大部分编程语言都一样: 变量名由数字、字母、下划线组成; 必须以字母或者下划线开头; 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。 但是 shell 有一些特殊变量,并不遵守上面的命名规范。 一、$0 指当前 shell 脚本的文件名。 二、$1~n 传递给 shell 脚本 或者 shell 函数 的参数。 n 是一个数字,表示第几个参数。 例如: $1 是第1个参数 $2是第2个参数 … 以此类推。 三、$# 传递给 shell 脚本 或者 shell 函数的位置参数的个数。 四、$* 传递给 shelll 脚本 或者 shell 函数的所有参数列表。 这里所有的位置参数都会被看成一个字符串。 五、$@ 传递给 shelll 脚本 或者 shell 函数的所有参数列表。 这里每个位置参数会被看做一个独立的字符串。 六、$$ 当前 shell 进程的 ID,即 PID(ProcessID) 七、$! shell 最后运行的后台进程的 PID 。 八、$? 最后运行的命令的结束代码(返回值) ,表示上一次命令是否执行成功: 0 : 表示执行成功, 非0 : 表示执行失败 九、$- echo $ -

shell学习——(二)

帅比萌擦擦* 提交于 2020-01-21 19:37:46
接着上一章,shell的基本概念介绍完后,具体介绍一些实用和常用的shell内建命令。 一、echo echo将参数打印到标准输出,参数之间以一个空格隔开,并以换行符结尾。 例如,$ echo "Enter your name: "这里引号可以不用 二、printf printf可以输出简单的字符串,例如 printf “Hello, world\n” 不同于echo,它不会自动提供一个换行符号。你必须显示地将换行符号指定成\n。 printf format-string [ arguments .. . ] 第一部分是一个字符串,用来描述输出的排列方式,最好为此字符串加上引号。此字符串包含了按字面显示的字符以及格式声明,后者是特殊的占位符,用来描述如何显示相应的参数。 例如 $ printf “The first program always prints ‘%S, %S!’\n” Hello world 三、 基本的I/O重定向 标准输入/输出:程序应该有数据的来源端,数据的目的端以及报告问题的地方,它们分别为标准输入、标准输出和标准错误输出。 默认的标准输入、标准输出以及标准错误输出都是终端。 例如$ cat now is the time #用户键入 now is the time # 由cat返回 重定向与管道 shell使用数种于发表基,改变默认的来源端与目的端。 以

Linux学习——菜鸟网站

限于喜欢 提交于 2020-01-19 01:55:46
https://www.runoob.com/linux/linux-install.html Linux 常用命令全拼:https://www.runoob.com/w3cnote/linux-command-full-fight.html Linux 命令大全:https://www.runoob.com/linux/linux-command-manual.html [shell]shell 中| && || () {} 用法以及shell的逻辑与或非https://www.cnblogs.com/aaronLinux/p/8340281.html 通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。 Shell 函数返回值在调用该函数后通过 $? 来获得。 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。 来源: CSDN 作者: Arlison ^O^ ??? 链接: https://blog.csdn.net/arlison/article/details/103814249

shell基础使用

社会主义新天地 提交于 2020-01-18 12:31:15
2、shell 2.1、shell基础正则表达式 ​ 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。并规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式( Regular Expression ) 。 2.1.1、普通元字符 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“ n ”匹配字符“ n ”。“ \n ”匹配一个换行符。串行“ \\ ”匹配“ \ ”而“ \( ”则匹配“ ( ”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“ \n ”或“ \r ”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“ \n ”或“ \r ”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo 能匹配“ z ”以及“ zoo ”。 等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“ zo+ ”能匹配“ zo ”以及“ zoo ”,但不能匹配“ z ”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“ do(es)?