Shell脚本快速入门
来源:互联网 发布:零趣tk域名 编辑:程序博客网 时间:2024/05/16 01:40
因为项目需要需用shell写一个linux测试脚本,发现网上此类文章十分杂乱,很难在短时间内上手,所以在此写一个bash shell脚本快速入门。其目的在于对于shell bash没有接触过的人可以看完后就可以实现一些简单脚本。
1. #!/bin/bash
需在脚本第一行添加此句,表明用/bin/bash解释器解释脚本
2. 变量赋值与使用
Bash Shell并不区分数据类型,而是把任何存储在变量中的值都当做字符串。所以不需要声明就可以使用变量。
<span style="font-size:18px;">myname=fiverwypmyname="fiver wyp"</span>
可以不加引号赋值一个变量,但等式右边有空格时必须加引号
另外,等式两边不能有空格!
变量使用时需要在前面添加$
<span style="font-size:18px;">echo $myname</span>
如果不加$则会直接输出字符串myname
<span style="font-size:18px;">echo myname</span>
如果变量和其它字符串之间没有空格,需要用大括号包裹变量名,如下
<span style="font-size:18px;">echo ${myname}ismyname</span>
3. 数组
数组初始化:
<span style="font-size:18px;">A=(0 1 2 3)</span>数组赋值:
<span style="font-size:18px;">A[0]=1</span>
数组取值:
<span style="font-size:18px;">echo ${A[1]}#1</span>
用变量作为索引来取值:
<span style="font-size:18px;">i=1echo ${A[$i]} #1</span>
数组长度:
<span style="font-size:18px;">echo ${#A[@]} #4</span>
数组全部取出:
<span style="font-size:18px;">echo ${A[@]} #1 1 2 3echo ${A[*]} #1 1 2 3c=(${A[@]})echo ${c[0]} #1</span>
数组清除:
<span style="font-size:18px;">unset A[0]</span>
这里可以总结一下,无论是变量还是数组,在赋值及改变(比如unset)时不需要在前面加$,在使用时需要加$以及{}
4. if
基本结构如下:
if [判断语句];then #do somethingelif #do other thingelse #do last thingfi
需要注意,if与判断语句之间必须有空格!
判断语句有如下几种:
(1)判断数字大小
int1 -eq int2 两数相等为真 int1 -ne int2 两数不等为真 int1 -gt int2 int1大于int2为真 int1 -ge int2 int1大于等于int2为真 int1 -lt int2 int1小于int2为真 int1 -le int2 int1小于等于int2为真
(2)判断字符串是否相等
str1 = str2 当两个串有相同内容、长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串) str1 当串str1为非空时为真
5. for
基本结构如下:
<span style="font-size:18px;">array=(1 2 3)for i in ${array[@]}do echo $idone</span>
6. 字符串替换
比如将$var的第一个空格全部替换成下划线,可以这么写:
<span style="font-size:18px;"></span><pre name="code" class="plain">${var/ /_}
若是全部空格都替换成下划线
${var// /_}
7. 算术运算
有(()) [] expr let四种方式,比如让m加1
m=$[ m + 1]m=`expr $m + 1`m=$(($m + 1))let m=m+1
8. $?得到命令行输出
有时候需要用到一些命令行,并根据输出进行流程控制,可以用$?指令得到上一次命令行的返回结果,0代表没有错误,1代表有错误。
比如需要判断一个程序是否在运行,可以如下写代码。若不在运行则$?为1,进入if内命令
<span style="font-size:18px;">pgrep function_nameif [ $? -gt 0 ];then #do something herefi</span>
9. 脚本传参
在命令行输入scriptName.sh para1 para2 可以向脚本传参,参数之间有空格。$1 $2分别表示第一、二个参数。$@或者$#可取出全部参数,不同的是$@取出的是一个数组,可以for $item in $@ 遍历,$#则是一个字符串。
当不知道参数数量时,可以用$@取出:
i=0for para in $@do parameter[$i]=$para ((i++))done
更过使用技巧点击这里
http://bbs.chinaunix.net/thread-218853-1-1.html
- Shell脚本快速入门
- Linux Shell脚本快速入门
- 快速入门shell脚本编写(一)
- 快速入门shell脚本编写(二)
- 快速入门shell脚本编写(三)
- 快速入门shell脚本编写(四)
- 快速入门shell脚本编写(一)
- 快速入门shell脚本编写(二)
- 快速入门shell脚本编写(三)
- 快速入门shell脚本编写(四)
- 快速入门shell脚本编写(一)
- 快速入门shell脚本编写(二)
- 快速入门shell脚本编写(三)
- 快速入门shell脚本编写(四)
- linux shell 脚本入门
- linux shell脚本入门
- Linux: shell 脚本入门
- Korn Shell 脚本入门
- robotium整理(二)
- open_input_file()函数介绍
- kill adb.exe
- Pseudo code for In-class QuestionExample 3: Write pseudo code that performs the following: Ask a use
- 【杂谈】蓝屏修复杂谈
- Shell脚本快速入门
- ld: warning: directory not found for option 去掉警告的方法
- Redis(一 安装使用)
- 在windows中创建ftp服务器
- 广播、组播、点播的区别
- SPOJ 7001 Visible Lattice Points(莫比乌斯反演)
- 超清、高清、标清
- React几种基本配置方案
- 很多事情你没有办法改变,那就不如让自己开心