1 Linux shell编程
2 目录
3 什么是Shell 1
4 Shell脚本的执行方式 1
5 第一种:输入脚本的绝对路径或相对路径 1
6 第二种:bash或sh +脚本 1
7 Shell中的变量 2
8 定义变量 2
9 将命令的返回值赋给变量 2
10 Shell中的特殊变量 3
11 $*与$@区别 3
12 运算符 3
13 for循环 4
14 while循环 5
15 case语句 5
16 read命令 6
17 if判断 6
18 if例子 7
19 判断语句 8
20 常用判断条件 8
21 Shell自定义函数 9
22 脚本调试 9
23 sed命令 10
24 sed选项 10
25 sed function 10
26 awk命令 11
27 awk命令格式 11
28
29
30 什么是Shell
31 •Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
32 •Shell也是一门编程语言<解释型的编程语言>,即shell脚本
33 •一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的
34 Shell脚本的执行方式
35 第一种:输入脚本的绝对路径或相对路径
36 首先要赋予+x权限
37 /root/helloWorld.sh
38 ./helloWorld.sh
39 或者,不用赋予+x权限,而用解释器解释执行
40 sh helloworld.sh
41 第二种:bash或sh +脚本
42 sh /root/helloWorld.sh
43 sh helloWorld.sh
44 Shell中的变量
45 •Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看那系统变量
46 •系统变量:$HOME、$PWD、$SHELL、$USER等等
47 显示当前shell中所有变量 : set
48 定义变量
49 •变量=值 (例如STR=abc)
50 •等号两侧不能有空格
51 •变量名称一般习惯为大写
52 •双引号和单引号有区别,双引号仅将空格脱意,单引号会将所有特殊字符脱意
53 •STR="hello world"
54 •A=9
55 •unset A 撤销变量 A
56 •readonly B=2 声明静态的变量 B=2 ,不能 unset
57 •export 变量名 可把变量提升为全局环境变量,可供其他shell程序使用
58 将命令的返回值赋给变量
59 •A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
60 •A=$(ls -la) 等价于反引号
61 Shell中的特殊变量
62 •$? 表示上一个命令退出的状态
63 •$$ 表示当前进程编号
64 •$0 表示当前脚本名称
65 •$n 表示n位置的输入参数(n代表数字,n>=1)
66 •$# 表示参数的个数,常用于循环
67 •$*和$@ 都表示参数列表  68 $*与$@区别
69 •$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以$1 $2 … $n 的形式输出所有参数
70 •当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
71 运算符
72 l格式 :expr m + n 或$((m+n)) 注意expr运算符间要有空格
73 l例如计算(2 +3 )×4 的值
74 1 .分步计算
75 S=`expr 2 + 3`
76 expr $S \* 4
77 2.一步完成计算
78 expr `expr 2 + 3 ` \* 4
79 echo `expr \`expr 2 + 3\` \* 4`
80 或
81 $(((2+3)*4))
82 for循环
83 •第一种:
84 for N in 1 2 3
85 do
86 echo $N
87 done
88 或
89 for N in 1 2 3; do echo $N; done
90 或
91 for N in {1..3}; do echo $N; done
92 •第二种:
93 for ((i = 0; i <= 5; i++))
94 do
95 echo "welcome $i times"
96 done
97 或
98 for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done
99 while循环
100 •第一种
101 while expression
102 do
103 command
104 …
105 done
106 •第二种
107 i=1
108 while ((i<=3))
109 do
110 echo $i
111 let i++
112 done
113 case语句
114 •格式
115 case $1 in
116 start)
117 echo "starting"
118 ;;
119 stop)
120 echo "stoping"
121 ;;
122 *)
123 echo "Usage: {start|stop} “
124 esac
125
126 read命令
127 lread -p(提示语句)-n(字符个数) -t(等待时间)  128 read -p "please input your name: " NAME
129 使用示例:
130
131 if判断
132 •语法
133 if condition  134 then  135     statements  136 [elif condition  137     then statements. ..]  138 [else  139     statements ]  140 fi
141 if例子
142 #!/bin/bash
143 read -p "please input your name:" NAME
144 #printf '%s\n' $NAME
145 if [ $NAME = root ]
146 then
147 echo "hello ${NAME}, welcome !"
148 elif [ $NAME = itcast ]
149 then
150 echo "hello ${NAME}, welcome !"
151 else
152 echo "SB, get out here !"
153 fi
154 判断语句
155 •[ condition ] (注意condition前后要有空格)
156 #非空返回true,可使用$?验证(0为true,>1为false)
157 [ itcast ]
158 #空返回false
159 [ ]
160 l[ condition ] && echo OK || echo notok
161 条件满足,执行后面的语句
162 常用判断条件
163 = 字符串比较
164 -lt 小于
165 -le 小于等于
166 -eq 等于
167 -gt 大于
168 -ge 大于等于
169 -ne 不等于
170 -r 有读的权限
171 -w 有写的权限
172 -x 有执行的权限
173 -f 文件存在并且是一个常规的文件
174 -s 文件存在且不为空
175 -d 文件存在并是一个目录
176 -b文件存在并且是一个块设备
177 -L 文件存在并且是一个链接
178 Shell自定义函数
179 l语法
180 [ function ] funname [()]
181 {
182     action;
183     [return int;]
184 }
185 function start() / function start / start()
186 •注意
187 1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译
188 2.函数返回值,只能通过$? 系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
189 脚本调试
190 •sh -vx helloWorld.sh
191 •或者在脚本中增加set -x
192 sed命令
193 •sed全称是:Stream EDitor即流编辑器,是一个很好的文本处理工具,本身是一个管道命令,处理时,把当前处理的行存储在临时缓冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行。它是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。
194 sed选项
195 •-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
196 •-e :直接在命令列模式上进行 sed 的动作编辑;
197 •-i :直接修改读取的文件内容,而不是输出到终端。
198 sed function
199 •a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
200 •d :删除,因为是删除啊,所以 d 后面通常不接任何内容
201 •i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
202 •p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
203 •s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
204 awk命令
205 •AWK是一种优良的文本处理工具。其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母,AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
206 awk命令格式
207 awk 'pattern1 {action1} pattern2 {action2} ...' filename

小菜鸟之shell的更多相关文章

  1. Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)

    最近在调试一个基于Matlab的程序,在偶然间发现了几个比较有趣的技巧,给大家分享一下(很可能是太菜鸟了,没有涉及这方面,大方之家请勿见笑,对您有所帮助请点赞!) 1. Matlab语言是一种解释型语 ...

  2. 前端小菜鸟的Mobile之旅---开篇

          背景:前段时间有幸参与了公司一个基于H5的手机APP项目,(我们用的React+ES6+Webpack+Cordova开发),由此开始接触一些关于H5开发手机APP方面的知识,下面Shar ...

  3. 每天一个小算法(Shell sort5)

    希尔排序的关键在于步长的选取. 希尔排序的复杂度比较复杂,主要跟步长的选择有关,大概是 O(n logn^2),一般认为就是介于 O(n^2) 和 O(n logn) 之间.最好步长比较复杂,一般第一 ...

  4. 小菜鸟带着梦想学chromium

    风雨送春归, 飞雪迎春到. 已是悬崖百丈冰, 犹有花枝俏. 俏也不争春, 只把春来报. 待到山花烂漫时, 她在丛中笑. 这首卜算子·咏梅可是应了我的心情了.最近换工作,受到频频打击,面试过程中发现满世 ...

  5. 第1次作业:小菜鸟的平凡IT梦

    #1.结缘计算机的始末 ##1.1与计算机相识的几年 作为一个95后,出生在一个互联网开始兴盛的时代.我记得小学的时候,开始知道电脑这个东西,学校有了机房,开始有了所谓的电脑课.那时候计算机对于我来说 ...

  6. 小苏的Shell编程笔记之六--Shell中的函数

    http://xiaosu.blog.51cto.com/2914416/531247 Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以 ...

  7. 每天一个小算法(Shell Sort1)

    希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进.希尔排序又叫缩小增量排序 基本思想: 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录 ...

  8. 小菜鸟之oracle

    oracle 存储过程 函数 创建 删除 参数 传递 函数 查看 包 系统包 分类: Oracle 2011-10-27 17:31 264人阅读 评论(0) 收藏 举报   认识存储过程和函数 存储 ...

  9. 小菜鸟之crond

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

随机推荐

  1. P1558 色板游戏 状压线段树

    P1558 色板游戏 状压线段树 题面 洛谷P1558 每次不同颜色覆盖一段区间,每次询问一段区间有多少种颜色 因为颜色数\(T\)很小,使用二进制表示状态当前区间有那些颜色,二进制第\(i\)位表示 ...

  2. Linux之防火墙【CentOS 7】

    CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙. firewall操作: # service firewalld status; #查看防火墙状态 (disab ...

  3. 十八、centos7网络属性配置

    一.为什么需要这个 服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的.Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序.为解决这类 ...

  4. Spring Cloud Config(二):基于Git搭建配置中心

    1.简述 本文选用Git作为配置仓库,新建两个环境的配置文件夹,dev 和 test,文件夹中分别存放 Config Client 端的配置文件,目录结构如下: ├ ─ ─ dev └ ─ ─ con ...

  5. docker部署nginx+vue项目

    1.vue项目打包 npm run build 会在项目生成dist文件夹,这个文件夹可以使用nginx或tomcat来发布服务 2.查找nginx基础镜像 可以通过以下网站找到符合自己的基础镜像,我 ...

  6. Wondershare Video Converter Ultimate 注册码 License

    这个软件可以直接将DVD iso转换成mp4播放,可以破解,还不错,特地记录 官网下载最新版: https://videoconverter.wondershare.com/gl/video-conv ...

  7. servlet容器:jetty,Tomcat,JBoss

    一.几款servlet容器对比:jetty,Tomcat,JBoss 二.JBOSS相关问题解决 1.JBOSS下载安装 2.处理jboss-as-7.1.1.Final与jdk1.8及1.8以上版本 ...

  8. 浅谈 es6 箭头函数, reduce函数介绍

    今天来谈一下箭头函数, es6的新特性 首先我们来看下箭头函数长什么样子, let result = (param1, param2) => param1+param2; 上述代码 按照以前书写 ...

  9. DLL:操作数据库和表

    1. 操作数据库 C(Create 创建) R(Retrieve 查询) U(Update 更新) D(Delete 删除) (1) 查询数据库 1) 查询所有数据库名称 SHOW DATABASES ...

  10. JS获取div高度的方法

    有时在写页面时,需要获取一个div的高度.怎么才能获取呢?哈哈,先上结论.有两种方法. offsetHeight .clientHeight getComputedStyle offsetHeight ...