shell基础知识
Shell 学习基础
1、组合命令的符号
- 管道,将前面一个命令的结果作为后面一个命令的输入
- 分号,顺序执行用分号分割的命令
- 重定向,重定向包括三种:输入重定向、输出重定向、错误重定向,以7个不同的符号实现
<
:输入重定向
>
:输出重定向
>>
:输出重定向,但以追加的方式写入
2>
:错误重定向
2>>
:错误重定向,但以追加的方式写入
&>
:重定向输出和错误
&>>
:重定向输出和错误,但以追加的方式写入
2、变量
- 变量的基本操作:
变量的定义格式:变量名=变量值
变量的引用格式:$变量名、${变量名}
- 脚本内的特殊变量
$n
:表示第n个参数
$*
:表示所有参数
$#
:标识传入脚本的所有参数个数
$?
:标识上一条命令的返回值
- 三种定界符的区别:单引号、双引号、反撇号
单引号:禁止引用和转义,即所有的符号都是所见即所得
双引号:允许引用和转义,即双引号中的变量会替换为变量的值
反撇号:以命令输出进行替换,即反撇号中的内容会替换为执行它的结果
- 执行变量内的命令
当我们需要在脚本中执行多次同样的命令时,可以将该命令放入一个变量中,然后每次使用该变量执行命令即可。
eval ${CMD}
3、算术运算
- 整数运算
使用expr
命令,计算表达式,格式:$(expr 数值1 操作符 数值2)
,对变量的引用需$
使用$[]
表达式,算式替换,格式:$[数值1 操作符 数值2]
,对变量的引用可以不加$
- 几个数值处理技巧
变量的递更处理,格式:let 变量名++、let 变量名--
使用随机数,格式:RANDOM 变量
生成数字序列,格式:seq 首数 末数、seq 首数 增量 末数 - 小数运算
shell本身没有提供小数运算,需要依靠管道来使用另外一个命令bc
4、字符串操作
- 字符串截取
路径分割:dirname命令、basename命令
使用expr命令:expr substr $var1
起始位置 截取长度,起始位置以1开始
使用${}表达式:${var:起始位置:截取长度}
,起始位置以0开始 - 字符串替换
使用${}表达式:${var/old/new}
替换第一个old为new和${var//old/new}
替换所有的old为new - 使用随机字符串
5、条件测试
- 测试操作规范
测试操作本质上也是一个命令,它的作用就是用来判断一个条件的,格式1:test 条件表达式
,格式2:[ 条件表达式 ]
,注意条件表达式和[]
之间的空格 - 文件状态的检测
-e
:文件或目录是否存在
-d
:是否为目录
-f
:是否为文件
-r
:是否可读
-w
:是否可写
-x
:是否可执行 - 整数值比较
-eq
:等于(equal)
-ne
:不等于(not equal)
-gt
:大于(greater than)
-lt
:小于(lesser than)
-ge
:大于等于(greater or equal)
-le
:小于等于(lesser or equal) - 字符串匹配
=
:判断两个字符串是否相等
!=
:判断两个字符串是否不相等
6、if 判断结构
1.单分支结构:
if 条件测试
then
命令序列
fi
2.双分支结构:
if 条件测试
then
命令序列1
else
命令序列2
fi
3.多分枝结构:
if 条件测试1
then
命令序列1
elif 条件测试2
then
命令序列2
...
else
命令序列n
fi
7、for 循环
语法结构:
for 变量名 in 取值列表
do
命令序列
done
取值列表用空白符分割,示例:
for i in 1 2 3 4 5
do
echo $i
done
输出结果:
1
2
3
4
5
8、case 分支
语法结构:
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
...
*)
默认命令序列
esac
9、awk 工具
- 语法格式:
awk '模式 {操作}' 文件1 文件2 ...
- 常用内置变量:
NR
:当前处理行的序号(行号)
FS
:字段分隔符,默认为空格或tab
$0
:当前行的所有内容
$n
:当前行第n个字段
10、sed 工具
- 语法格式:
sed '编辑指令' 文件1 文件2 ...
sed -n '编辑指令' 文件1 文件2 ...
不输出指令不影响的数据
sed -i '编辑指令' 文件1 文件2 ...
直接修改文件 - 编辑指令写法:
[地址1[,地址2]]操作类型
多条指令之间以分号隔开,是指编辑指令,例如:sed -n '3p;5p' test.dat
- 常用操作类型:
p
:输出文本行
n
:取下一行文本(跳过当前行)
d
:删除
s
:字符串替换
a
:追加新文本
10、参数
$n:取传给函数或者脚本的第n个参数(n从0开始),当大于9时,需要用大括号括起来,${10}
$0:脚本的名称
$@:所有参数
$:所有参数,当以""包括时,$是一个整体,$@是分开的
$#:参数个数
$$:当前shell的进程ID
shell基础知识的更多相关文章
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- Linux Shell 基础知识(一)
1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...
- Shell 基础知识和总结
调试脚本 检查脚本语法错误 bash -n /path/to/some_script 调试执行 bash -x /path/to/some_script shell里的变量 本地变量:只对当前shel ...
- shell基础知识总结
1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...
- shell基础知识---与监听服务器长连接端口状态
从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知识主要就四部分内容 一.变量 变量的定义 string='字符串' string="字符串" num=808st ...
- shell基础知识讲解
第1章 shell基础 1.1 什么叫做shell编程 shell编程也叫做bash高级编程语法 1.2 常见的shell命令解释器 bash redhat和centos使用 d ...
- shell从入门到精通进阶之一:Shell基础知识
1.1 简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户. 下面是处 ...
- Shell基础知识和编程规范
一,Shell环境查看 1.1 查看系统Shell支持情况 [root@linux-node1 ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin ...
- shell基础知识5-函数
函数的定义 function fname(){ } 或者 function_name(){ } 对于简单的函数,甚至可以是这样做 fname() { statement; } 函数调用 直接写函数名即 ...
随机推荐
- PostgreSQL Replication之第十章 配置Slony(2)
10.2 理解 Slony如何工作 在我们开始复制我们的第一个数据库之前,我们想深入Slony的架构.理解这是如何工作的是非常重要的,否则,将不可能以一种有用的和合理的方法使用这个软件.与事务日志流不 ...
- G面经prepare: Android Phone Unlock Pattern
1 2 3 4 5 6 7 8 9 只有中间没有其他键的两个键才能相连,比如1可以连 2 4 5 6 8 但不能连 3 7 9 但是如果中间键被使用了,那就可以连,比如5已经被使用了,那1就可以连9 ...
- 20145207 《Java程序设计》第10周学习总结
前言: 最后一篇java博客好激动啊..不过猜猜我在干什么?没错,安虚拟机,唉!紧接着又是一大波信安系统的博客,真开心~好啦边敲博客,边装虚拟机. 教材知识汇总 13.1 网络概述 13.1.1计 ...
- struts复合类型传值(对象传值)
01:导包,配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version ...
- Immediate assertion
Imemdiate assertion可以放在任何procedural statement中, assertion被执行判断,当这个procedural code被执行的时候.其他时间是不会被执行的. ...
- sdf
SDF(Standard Delay Format)是一种存储timing data的文件,其中的数据是tool-independent的 可以包括: 1)Delay: module path, de ...
- RobotFramework 安装配置(二)
前面已经写了一篇关于RF的安装配置了,那是在做自动化工具调研的时候搭建RF总结的,基于win32的系列软件安装的过程.经过1个月的调研,做成了demo,也大致学RF的使用和python的基础语法,暂时 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON DirectFile
zw版[转发·台湾nvp系列Delphi例程]HALCON DirectFile unit Unit1;interfaceuses Windows, Messages, SysUtils, Varia ...
- x3270: PCOM的替代品
在Linux上登录Mainframe的利器,而且也是PCOM的免费版.原来没有仔细研究,今天花了一些时间学习,确实能满足基本的要求: x3270的Homepage 看一下Release Note, ...
- Watir资源列表【转】
Watir简介 "Watir" (发音与 water相近) 全写是 "Web Application Testing in Ruby".Watir是一款用Rub ...