shell脚本实例

Shell编程之case多分支语句、循环语句(for、while等)、Shell函数、Shell数组

匿名 (未验证) 提交于 2019-12-03 00:14:01
case多分支语句 case语句的结构: 针对变量的不同取值,分别执行不同的命令列 case 变量值 in 模式 1 ) 命令序列 1 ;; 模式 2 ) 命令序列 2 ;; ..... *) 默认命令序列 esac 示例 : 字符类型识别: 提示用户输入一个字符; 判断出该字符是字母、数字或者其他字符。 脚本如下: [ root@localhost opt ]# vim test01 . sh #!/bin/bash read - p "请输入一个字符:" key case $key in [ a - z ]|[ A - Z ]) echo "你输入的是字母" ;; [ 0 - 9 ]) echo "你输入的是数字" ;; *) echo "你输入的是特殊符号" esac 执行结果如下: [ root@localhost opt ]# chmod + x test01 . sh [ root@localhost opt ]# ./ test01 . sh 请输入一个字符: 3 你输入的是数字 [ root@localhost opt ]# ./ test01 . sh 请输入一个字符: d 你输入的是字母 [ root@localhost opt ]# ./ test01 . sh 请输入一个字符:# 你输入的是特殊符号 [ root@localhost opt ]# 循环语句

shell-Startup-Files

匿名 (未验证) 提交于 2019-12-02 23:55:01
shell-Startup-Files 1. 相关阅读 2. 主流shell 3. shell实例类型 4. Shell启动文件的必要元素 4.1 路径: 命令路径, 4.2 提示符 5. 主流shell的配置文件 6. 默认的bash 6.1 手册 6.2 bash启动文件 6.3 提示符 7. 友好的fish 7.1 简介 7.2 查看帮助文档 7.3 fish的配置 8. zsh 1. 相关阅读 https://www.cnblogs.com/sztom/p/11349159.html shell脚本 https://szosoft.blogspot.com/2019/07/console-terminal-tty-shell-kernel.html https://www.cnblogs.com/sztom/p/11247883.html Console-terminal-tty-shell-kernel Shell在计算机系统中的位置 http://hyperpolyglot.org/unix-shells 常用shell语法对照(Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh) https://en.wikipedia.org/wiki/Comparison_of_command_shells https://opensource.com

Shell脚本语言

匿名 (未验证) 提交于 2019-12-02 22:56:40
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有: bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。 sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。 另外还有:ash、 csh、 ksh等。 常见的编程语言分为两类:一个是编译型语言,如:c/c++/java等,它们远行前全部一起要经过编译器的编译。另一个解释型语言,执行时,需要使用解释器一行一行地转换为代码,如:awk, perl, python与shell等。 Shell 经过了POSIX的标准化,所以它是可以在不同的linux系统上进行移植。 关于注释的问题: 在shell中使用#进行注释,注意,sh里面没有多行注释,只能每一行加一个#号; 第一个shell脚本程序: #!/bin/bash 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行; echo "Hello, world!" 变量: 定义变量: country="China" Number=100 注意: 1,变量名和等号之间不能有空格; 2,首个字符必须为字母(a-z,A-Z)。 3, 中间不能有空格,可以使用下划线

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 中/etc/profile、~/.bash_profile 环境变量配置及执行过程

匿名 (未验证) 提交于 2019-12-02 21:59:42
环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。下面通过几个实例来说明。 1)etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. 注:在这里我们设定是为所有用户可使用的全局变量。 2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. 3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息, 当用户登录时,该文件仅仅执行一次! 默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 注:~在LINUX下面是代表HOME这个变量的。 另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是~/.bash_profile; ~/.bash_login或 ~/.profile其中的一种或几种,如果存在几种的话

linux shell:${var1##*:} ${bz1%,*}的意思

匿名 (未验证) 提交于 2019-12-02 21:59:42
介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。 假设定义了一个变量为: 代码如下: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值: ${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt ${file#*.}:删掉第一个 . 及其左边的字符串:file.txt ${file##*.}:删掉最后一个 . 及其左边的字符串:txt ${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3 ${file%%/*}:删掉第一个 / 及其右边的字符串:(空值) ${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file ${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my 记忆的方法为: # 是 去掉左边(键盘上#在 $ 的左边) %是去掉右边(键盘上% 在$ 的右边) 单一符号是最小匹配;两个符号是最大匹配 ${file:0:5}:提取最左边的 5 个字节:/dir1 ${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

linux shell 基础语法A-2

匿名 (未验证) 提交于 2019-12-02 21:56:30
A-1讲了一些基本的语法,A2部分继续上次的内容接着讲。 shell是一门编程语言,自然也有结构化的表示方法。常见的编程语言结构化就是判断和循环。shell中的判断分为3类:数值判断,字符判断,文件判断。 判断的几种形式 If command Then command Fi If command Then command Else command Fi If command Then command Elif command Then command Else command fi (1)数字判断 实例:简单的猜数字 (2)字符判断 实例:判断输入的选项 (3)文件判断 实例:创建log文件前检查目标路径是否存在 #!/bin/bash if [ ! -d /mnt/123testlog/2019-08-31 ] then mkdir -p /mnt/123testlog/2019-09-31 fi 还需要关注 If test xxxx的用法 对参数值得判断处理 复合条件判断 If [] && [] If [] || [] 双括号 --双圆括号(数学表达式高级功能) --双方括号(字符串高级功能) 多选择判断时使用if结构就比较繁琐了,采用case更佳 Case Case xxx in p1) cmd ;; p2) cmd ;; *) default cmd ;; Esac

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之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 请按个键

shell 除法和格式化输出printf

我只是一个虾纸丫 提交于 2019-12-02 11:43:28
相关知识的补充: printf命令模仿C程序库里的printf()程序。printf由POSIX标准所定义,因此使用printf的脚本比使用echo有着更好的移植性。 printf使用引用文本或者空格分隔参数,外面可以在printf中使用格式化字符串,还可以指定字符串的宽度,左右对齐方式等。默认不会像echo自动添加换行符,但是可以手动添加\n printf命令的语法: printf format - string [ arguments ...] 参数说明: format-string:为格式控制字符串 arguments:为参数列表 尝试下面实例 printf "%-10s %-8s %-4s\n" 姓名 性别 体重 kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 输出的结果为 姓名 性别 体重 kg 郭靖 男 66.12 杨过 男 48.65 郭芙 女 47.99 实例中的%s %c %d都是格式替代符 %-10s指一个宽度为10个字符(-代表左对齐,没有代表右对齐)任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。 %-4