Linux: Bash Shell Script
2020-06-22 11:08
113 查看
Bash Shell Script
- 目录
- Linux中Shell种类
- 创建
- 命令
- Bash的快捷键
- Bash的标准输入、输出:
- Bash的输出重定向:把命令的输出结果由显示器改为文件中
- Bash输入重定向:改由键盘输入方式为由文件读入输入的方式
- Bash多条命令顺序执行
- Bash管道符
- Bash通配符
目录
简记
Linux中Shell种类
Less /etc/shells: 查看linux下的shell
Sh Bash Csh
创建
vim sample.sh #!/bin/sh echo "Hello world!"
执行方法一:
chmod 755 sample.sh ./sample.sh
执行方法二:
bash sample.sh #文件内容开头可以不用指定‘#!/bin/sh路径’
命令
history #-c:清空历史 #-w:保存历史命令/home/user/.bash_history文件中
Bash的快捷键
Con a Con c 取消
Bash的标准输入、输出:
键盘 /dev/stdin 0 标准输入 显示器 /dev/stdou 1 标准输出 显示器 /dev/stderr 2 标准错误输出
Bash的输出重定向:把命令的输出结果由显示器改为文件中
命令 > 文件 覆盖方式,只能保存命令执行正确后的结果。 命令 >> 文件 追加方式,只能保存命令执行正确后的结果。 命令 2> 文件 覆盖方式,保存命令执行错误的结果。 命令 2>> 文件 追加方式,保存命令执行错误的结果。 命令 >/>> 文件 2>&1 覆盖/追加方式,保存命令执行正确/错误结果到同一个文件中。&> 命令 >> 文件一 2>>文件二 追加方式,保存命令执行正确/错误结果到同一个文件中。
Bash输入重定向:改由键盘输入方式为由文件读入输入的方式
wc 【选项】 【文件名】 -c:统计字节数 -w:统计单词数 -l:统计行数
Bash多条命令顺序执行
Lsjkkjkjkjkj ; cd /etc ; date 用分号分割不同命令,按顺序独自无关系分别执行,没有任何逻辑联系。 命令一 && 命令二 当命令一执行正确时才继续执行命令二。 命令一 || 命令二 当命令一执行错误时才继续执行命令二。
Bash管道符
命令一 | 命令二 | 命令三 把命令一的结果作为命令二的执行条件,再把命令二的结果作为命令三的执行条件。 Grep 和 find类似,都是查找。 Netstat –an | grep “查找内容” | wc –l 执行nestat,然后在结果中查找“查找内容”,将查找的内容统计行数
Bash通配符
?匹配任意一个字符 *匹配0个或任意多个字符,也就是匹配任何内容。 []匹配括号其中的任意一个字符。 [-]匹配括号中任意一个字符,-表示范围,如[0-9],[a-z],[0-9,a-z] [^]逻辑非,匹配不是括号中的一个字符,如[^0-9],代表匹配一个不是数字的字符
Bash变量
Bash变量命名
字母数字下划线 默认是字符型,指定为数值型时才能进行运算。 赋值时用等号,但两端不能由空格。 若赋值存在空格,用双引号,name=”You are so beautiful!”,其中“\” “$”等都是特殊意义符号,但是单引号’‘扩起来的内容都是普通字符串。 在变量中可以使用转义字符”\“ 环境变量最好大写,以便于区分。 Name=”You” Name=“you are so beautiful” Value=”$name”
Bash用户自定义变量
增、删、查、改 变量定义:name=”haha“ 变量调用:$name 变量查看:set 变量删除:unset 变量名
Bash的环境变量
用户自定义环境变量: export AGE=”18” 系统自带环境变量: echo $PATH 显示自带的环境变量,这种变量只能更改内容。(系统命令查找过程) 修改:PATH=”$PATH”:/home/manager/Desktop/share
Bash的位置参数变量
$0, $1, …, $9, ${10, ${11},分别表示命令本身,命令后的第一个参数,第二个参数,…,第十个参数,第十一个参数。 实例: Vim count.sh #!/bin/bash a=$1 b=$2 sum=$(($a+$b)) #$(())将字符转为数值后进行计算 echo $sum chmod 755 count.sh ./count.sh 22223 363666 将两数相加 预定义变量: $? 上一条命令的执行状态,0:正常,非0:不正常。 $$ 当前运行的进程ID号,PID $! 后台运行的最后一个进程的ID号,PID
Bash接受键盘输入
Read 【选项】 【变量名】 -p 在等待输入时显示的提示信息 -t 等待时间 -n 只接受指定的字符数 -s 隐藏输入数据,用于机密 变量名可以自定义,默认REPLY 实例: Read -s 30 –p “Please input:” age
Bash的运算符
declare 【+/-】 变量名 -:声明 +:取消 -a:声明为数组 -i:声明为整数 -x:声明为环境变量 -p:显示指定变量被声明的类型 实例: X=1 Y=2 Declare –i x Declare –I y Declare sum=$x+$y Echo $sum $((运算式子))同上功能,但是更加简洁。
bash变量环境变量配置文件
生效: source 配置文件或.配置文件 目前linux下环境变量的配置文件: /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc 面向所用用户 只面向当前用户
Shell编程
正则表达式
Ls、find、cp 支持通配符 Grep、awk、sed 支持正则表达式
基础正则表达式
*表示星号前一个字符重复0次或无数次。 .匹配除了换行符以外的任意一个字符。 ^匹配行。如^hellow,匹配段落以hellow开头的记录。 $匹配行尾。如hellow$匹配hellow结尾的记录。 ^$表示匹配空白行。Grep –V ”^$” test.txt 表示取反,即查找除空白行以外行。 \转义字符,取消其后符号的特殊意义。.$去除空行,\.$表示所有以.结尾的行。 []中括号中的一个字符,这和通配符类似。[0-9] [a-z] [A-Z] [^]匹配出中括号内字符以外的任意一个字符。 \{3\}前一个字符重复三次。如a\{3\}查找a重复三次的行。 \{n,m\}前一个字符最少重复n次,最多重复m次。
扩展正则表达式
grep默认不支持扩展正则表达式,必须家-E选项后方可使用。 +前一个字符重复一次或无数次。 ?前一个字符匹配0次或1次。 |匹配两个或多个分之选择。Was|his匹配包含was的行,也匹配包含his的行。 ()视为一个整体。
Bash的字符截取和替换
Grep是提取行字符串 –V取反 文本处理列字符串cut【选项】 【文件名】 -f行号 提取第几列 cut –f 2,4 test.txt 提取第二和第四列 -d分隔符,指定以什么符号来作为分隔符 tab 空格 ;等 文本处理awk编程: 文本处理sed:对文件中的数据进行选择,替换,删除,增加 排序sort 统计wc
Bash条件判断
1.判断文件类型: Test –e test.txt 文件是否存在 [-e test.txt] 同上,更加常用 [-d test] 判断是否为目录 [-f test.txt] 判断是否为普通文件 [-l test] 判断是否为连接 [-s test.txt] 判断文件是否为空 2.两个整数之间的比较 [ –qe y ] && echo “yes” || echo “no” 3.字符串之间比较 Name=”hah” [ -z $name ] && echo “yes” || echo “no” 4.数值比较 -eq #等于 -gt #大于 -ge #大于等于 -lt #小于 -le #小于等于 -ne #不等于
Bash流程控制
单分支: If [ 条件判断 ] then pass Fi 双分支: If [ 条件判断 ] Then Pass Else Pass Fi 多分支判断语句: If [ 判断 ] Then Pass Elif [ 判断 ] Then Pass Elif [ panduan ] Then Pass Else 但所有条件不成立时执行此pass Fi 多分枝case语句: Case $变量名 in ”1值“) Pass ;; ”2值“) Pass ;; *) 默认执行此pass Esac Bash的for语句: For i in 1值 2值 3值 。。。 Do Pass Done 或者: For ((i=1;tiaojian;i=i+1)) Do Pass Done Bash的while语句:条件成立时循环 While [ 判断 ] #中括号 Do Pass Done Bash的untill语句:条件不成立时循环,和while刚好相反 Until [ panduan ] Do Pass Done Bash的exit语句:
相关文章推荐
- linux/unix shell bash script 小记
- Linux bash shell special characters and script syntax.
- Linux Command Line and....ch3(基本的bash shell)
- 4 Ways of Executing a Shell Script in UNIX / Linux
- Linux Bash shell位置参数和命令行参数
- Bash For Loop Examples for Your Linux Shell Scripting--ref
- Linux下shell与子shell及执行Script的几种方式
- linux --> shell --> script基础
- Linux用户登录shell终端,提示-bash-4.1$的错误信息或警告信息的解决办法
- linux 启动脚本-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory,shell脚本执行不了
- 【Unix/Linux.Shell Script】Shell Script的执行及特殊字符
- 【Unix/Linux.Shell Script】退出状态,exit命令
- ./ . 和#!/bin/bash 辨析Linux如何选择当前执行脚本的shell
- [Linux] Single quote vs. Double quote inside Shell script
- Linux Bash Shell学习(四):编辑命令
- Ubuntu的shell之bash和dash 分类: arm-linux-Ubuntu 2013-08-20 17:25 664人阅读 评论(0) 收藏
- Linux Bash Shell学习(十三):流程控制——while/util
- linux下shell显示-bash-3.2$ 不显示路径解决方法
- Linux Bash Shell快速入门
- 10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例