shell函数

Linux_(3)Shell编程(上)

匿名 (未验证) 提交于 2019-12-02 21:59:42
一、shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 1.Shell 脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 什么是脚本语言? 脚本语言是像剧本一样教计算机办某个事情的语言, 这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。 2.Shell 环境 Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) …… Bash(Bourne Again Shell)是日常工作中使用最广泛的,也是大多数Linux 系统默认的 Shell。 在一般情况下,并不区分 Bourne Shell 和 Bourne Again Shell, 所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。 #! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

Linux学习-shell初始化文件

匿名 (未验证) 提交于 2019-12-02 21:59:42
正在学习Linux,记录一下学习历程。 参考《Unix&Linux大学教程》( 幽默感+事无巨细) ,进行了精简摘要和总结。 初始化文件分为三种(以bash为例): 登录文件(.bash_profile,.bash_login) 环境文件(.bashrc) 注销文件(.bash_logout)(有些shell不支持) 以一个点号开头的文件称为隐藏文件,当使用ls -a选项时才会被列举。 一旦以自己需要的方式设置好这些文件,除非希望修改它们,那么在每次列举的时候,没有必要查看它们。 以rc结尾的文件通常用于存放初始化命令。(rc是run commands的缩写) Bourne shell家族的shell首先运行登录文件。 C-Shell家族的文件首先运行环境文件。 登录文件 任务: 设置环境以及初始化工作会话。 内容: 创建或者修改环境变量的命令 执行所有一次性操作的命令 因为环境自动地被子进程(包括新shell)所继承,因此,环境变量(如PATH)只需在登录文件中设置一次。 环境文件 任务: 设置不能在环境中保存的自定义项,特被是shell选项,别名和函数。 因为这些设置没有存储在环境中,所以每次启动新shell时都必须重新创建它们。 只需要重新生成新shell启动时丢失的东西。 注销文件 存放注销时自动运行的命令。

()、(())、[]、[[]]、{}的作用

老子叫甜甜 提交于 2019-12-02 20:20:33
目录 单括号(): 单中括号[ ]: 双中括号[[]]: 大括号{}: Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用 技巧小结: 字符串比较用双中括号[[ ]];算数比较用单中括号[ ]——左右留空格 算数运算用双小括号(( )) ;shell命令及输出用小括号( )——左右不留空格 快速替换用花括号{ }——左右留空格 反单引号起着命令替换的作用 单括号(): 另开命令组——小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无空格 得到命令输出——a=$(command), 等同于a=$`command`,得到命令输出传递给变量a 初始化数组——array=(a b c d) 双括号(()): 省去$符号的算术运算—— for((i=0;i<5;i++)); if (($i<5)); a=5; ((a++)) 可将 $a 重定义为6;括号内支持多个表达式用逗号分开。 C语言规则运算——$((exp)),exp为符合C语言规则的运算符,表达式 跨进制运算——二进制、八进制、十六进制运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制) 单中括号[ ]: 字符串比较——==和!= 整数比较——不等于:-gt:大于;-lt :小于;-eq

shell分享

折月煮酒 提交于 2019-12-02 20:18:58
shell脚本分享 一、介绍shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本。 shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 为什么使用shell脚本? 简化对于多个重复命令的操作,适用于批处理。(原本是觉得docker没有怎么简化操作,每次都要敲那么多代码,后来发现可以用shell脚本写脚本批处理运行之)。 shell脚本以.sh为文件名的后缀(不强制,规范而已) 脚本第一行以 #!/bin/bash 或者 #!/bin/sh 开头(不是必须的) 执行: 1. chmod +x 脚本名 : 授予执行权 然后可以 ./文件名运行 2. sh 脚本名 3. /bin/bash 脚本名 4. bash 脚本名 二、代码实操 hello world vim helloworld.sh #!/bin/bash echo "hello wolrd!!!" 运行 sh

shell基础 -- 基本语法

微笑、不失礼 提交于 2019-12-02 19:21:39
目录 1.1 变量的命名 1.2 变量的赋值 1.3 变量的类型 2.1 使用 expr 命令对算术表达式求值 2.2 使用 $(( ... )) 的方式对算术表达式求值 3.1 bash 计算器 bc 3.2 在脚本中使用 bc 5.1 if 语句 5.2 case 语句 5.3 for 语句 5.4 while 与 until 语句   本文介绍一下 shell 的语法。 一、变量   在 shell 里,使用变量之前通常并不需要事先为他们做出声明,需要使用的时候直接创建就行了。 默认情况下,所有变量都被看做字符串并以字符串来存储,即使它们被赋值为数值时也是如此 。shell 和一些工具会在需要时把数值型字符串转换成对应的数值以对它们进行操作。 回到顶部 1.1 变量的命名   shell 变量的命名规则如下: 开头是一个字母或下划线,后面可以接任意长度的字母、数字或下划线符号,变量名的字符长度并无限制 (Bourne shell中)。不过为了兼容性(一些早期的shell里变量名是有长度限制的),一般还是不要超过255个字符。另外, Linux 区分大小写 。当用户自己定义变量的时候,要注意变量名不能与 shell 中的关键字重名。 回到顶部 1.2 变量的赋值   shell 中变量的赋值方式如下: 变量名=值 # 注意 赋值语句两边不能有空格   注意,

15-1 shell脚本进阶

亡梦爱人 提交于 2019-12-02 19:15:54
shell脚本进阶 循环 循环执行 将某代码段重复运行多次 重复运行多少次 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 for, while, until for循环 for VAR in [list];do CODE done 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束 列表生成方式: (1) 直接给出列表 (2) 整数列表: (a) {start..end} (b) $(seq [start [step]] end) (3) 返回列表的命令 $(COMMAND) (4) 使用glob,如:*.sh (5) 变量引用 $@, $* for特殊格式 双小括号方法,即((…))格式,也可以用于算术运算 双小括号方法也可以使bash Shell实现C语言风格的变量操作 I=10 ((I++)) for循环的特殊格式: for ((控制变量初始化;条件判断表达式;控制变量的修正表达式)) do 循环体 done 控制变量初始化:仅在运行到循环代码段时执行一次 控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断 while循环 while CONDITION; do 循环体 done CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为

星云精准测试对安卓底层驱动代码的测试案例分析

∥☆過路亽.° 提交于 2019-12-02 18:12:16
Android原生底层驱动应用面极广,但一直没有很好的办法进行质量追踪。本文借助星云精准测试的高可靠性的测试技术手段,针对Android原生底层驱动进行分析、插桩、编译、采集数据、数据分析等,逐步讲解精准测试是如何实现android原生底层驱动的对接。 在本文中,我们可以清晰地查看到如何进行技术对接的每一步,比如如何使用星云精准测试进行代码插桩、实现测试用例与采集底层驱动运行代码的数据追溯、对最终采集的数据进行一系列分析等。 一、安卓源码精准测试流程概述 经分析android源码的编译主要依靠Android.bp为纽带连接起来;在编译时,只需要在想要编译的模块目录下执行mm命令即可自动的根据当前目录下的Android.bp文件对其所包含的模块进行编译。 主要流程大致为:先将ZOA通信库源码复制进去并加入某一层次的Android.bp中,再通过对包含所有Android.bp编译信息的ninja文件的解析可以得到Shell认可的插桩json文件,Shell通过json文件对对应目录的代码进行插桩,插桩完成后,把对ZOA通信库的引用加入该模块的Android.bp中再放入ZoaInstru.h头文件后就可以正常编译出插桩程序了。 二、对安卓源码进行精准测试的准备工具 1.安卓原生8.1.0系统源码,放于/data/source2/目录下 2.shell.tar.gz插桩工具包放于

shell编程-学习

梦想的初衷 提交于 2019-12-02 15:29:23
Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 什么是 Shell? Shell 编程的 Hello World Shell 变量 Shell 编程中的变量介绍 Shell 字符串入门 Shell 字符串常见操作 Shell 数组 Shell 基本运算符 算数运算符 关系运算符 逻辑运算符 布尔运算符 字符串运算符 文件相关运算符 shell流程控制 if 条件语句 for 循环语句 while 语句 shell 函数 不带参数没有返回值的函数 有返回值的函数 带参数的函数 Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。 很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做Linux运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是shell编程也是我们必须要掌握的! 目前Linux系统下最流行的运维自动化语言就是Shell和Python了。 两者之间,Shell几乎是IT企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止

Shell脚本基础学习

江枫思渺然 提交于 2019-12-02 14:58:30
Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会这个东西, 你可以说入行了. 高级程序员不会这个, 是怎么回事, 我鄙视你, 所以我要学习, 记不住怎么办, 请看各种shell文件, 如 Go语言编译 ! 参考: 这里 从第一行开始 我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/bash 此行称为 shebang (就是 sharp (#) + bang (!) 的意思),会指引操作系统使用接下来指定的程序运行此文件。此处用 /bin/bash 执行我们的文件。 一些人使用 #!/bin/sh 来让 sh 执行文件,按照习惯这表示任何支持 POSIX shell 命令语言的 sh 程序。为了用上我们所喜欢的 bash 拓展语法功能,我们就不这么用了。如果你使用别的脚本,例如 /bin/tcsh ,照着样子加个 #! 就行。 编辑结束并保存后,如果直接要执行该脚本,必须先使其具有可执行属性: chmod +x filename 此后在该脚本所在目录下,输入 ./filename 即可执行该脚本。 变量

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

♀尐吖头ヾ 提交于 2019-12-02 13:52:00
前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中;;表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语句,其适用于一个范围 *后面 不需要加;; 1.2 case执行过程流程图 case针对变量的不同取值,分别执行不同的命令序列 case变量匹配的是模式,if变量匹配的是条件 1.3 case语句应用示例 1.3.1 示例1:击键类型识别 提示用户输入一个字符 判断出该字符是字母、数字或者其他字符 #/bin/bash read -p "请按个键,我可以测试年的键是字母数字或是其他字符" jian case "$jian" in [0-9]) echo "你按的是数字" ;; [a-z]|[A-Z]) echo "你按的是字母" ;; *) echo "你按的是特殊字符" esac [root@localhost opt]# sh shibiejijian.sh 请按个键