Shell脚本编程笔记(1)
来源:互联网 发布:linux vi 跳到指定行 编辑:程序博客网 时间:2024/06/14 22:44
Shell脚本编程笔记
如何运行
chmod +x
使文件具有可执行权限, 直接运行- 直接调用解释器, 将脚本文件作为参数传入 (比如
bash hi.sh
) - 使用
source
(也可用.
代替)执行文件
一般使用第一种,方式3执行的方式与前两种都不同:使用source
执行shell
脚本时, 不会创建子进程, 而是在父进程中直接执行。
变量
Shell
中的变量只有字符串这一种类型Shell
中变量名与变量值没有长度限制Shell
的变量也允许比较操作和整数操作, 只要变量中的字符串为数字
定义变量
variable_name=ghui
需要注意:=
两边不能加空格, 当赋值语句包含空格时请加引号(单引号/双引号均可)比如:
variable_name="ghui's blog"
Shell
中的变量可以分为两种类型:
- 局部变量 (定义变量时在前面加
local
修饰符) - 全局变量 (定义变量时不加任何修饰符)
局部变量的可见范围是代码块或函数内,全局变量在全局范围内可见。
使用变量
name=ghuiecho $nameecho ${name} #{} 为了帮助解释器识别变量边界, 非必须
在使用变量时还有一个地方需要注意,即: 被双引号括起来的变量会发生变量替换, 单引号不会
#! /bin/shstr='abc'echo "1 print $str"echo '2 print $str'
输出:
1 print abc2 print $str
常用的字符串操作
name="shell"sayHi="hello, "$name" !"sayHi2="hello, ${name} !"echo $sayHi $sayHi2
输出
hello, shell! hello, shell!
获得字符串长度
string="abcd"echo ${#string} #输出:4
截取字符串
str="hello shell"echo ${str:2} #输出: llo shellecho ${string:1:3} #输出:ell
if
/else
流程控制
#! /bin/sha=1if [ $1=$a ]then echo "you input 1"elif [ $1=2 ]then echo "you input 2"else #do nothing echo " you input $1"fi
这里有两个地方需要注意, 如果某个条件下的执行体为空, 则不能写这个条件。另外, [ ]
两边一定要加空格。
switch流程控制
case expression in pattern1) do something... ;; pattern2) do something... ;; pattern2) do something... ;; ...esac
注意:
1. ;;
相当于其它语言中的break
2. 每个pattern
之后记得加)
3. 最后记得加esac
(即反的case
)
for循环
for name [in list]do ...done
其中,[]
括起来的in list
, 为可选部分, 如果省略in list则默认为in “$@”,即你执行此命令时传入的参数列表。
while循环
while conditiondo do something...done
#! /bin/shi=0while ((i<5))do ((i++)) echo "i=$i"done
until循环
until conditiondo do something...done
#!/bin/shi=5until ((i==0)) # 这里是i==0do ((i--)) echo "i=$i"done
跳出循环
break
,continue
函数
要定义一个函数, 可以使用下面两种形式:
function funcname() | funcname (){ | { do something | do something} | }
- 函数必须先定义后使用
- 如果在函数中使用
exit
会退出脚本, 如果想退回到原本函数调用的地方, 则可使用return
向脚本传递参数
先shell
脚本传递参数, 非常简单, 只需要在你执行命令的后面跟上即可。
0 0
- shell脚本编程学习笔记(1)
- Shell脚本编程笔记(1)
- shell脚本编程流水笔记
- 【笔记】Linux shell脚本编程
- Shell脚本编程学习笔记
- Shell脚本编程学习笔记
- Linux Shell 脚本编程(1)—Shell脚本基础知识
- Shell脚本编程(-)
- Shell脚本笔记 1
- 《Linux命令行与Shell脚本编程大全》学习笔记1
- Linux命令行与Shell脚本编程[学习笔记1]
- shell脚本编程学习笔记(2)正则表达式
- Linux shell编程学习笔记(三) 脚本参数
- shell脚本学习笔记(1)
- 《linux命令行和shell脚本编程宝典》学习笔记1(第一章至第六章)
- Linux Shell 脚本编程从入门到精通 (笔记1)
- Shell 编程学习笔记:脚本输入参数
- Shell编程之脚本参数传递笔记
- But I set fire..
- poj 3667 线段树区间合并
- python数据结构
- Maven(2)——(搭建nexus)
- 以后要学会使用奇偶性啊
- Shell脚本编程笔记(1)
- HDU 5748 Bellovin(LIS)
- 2016.7.18纪中比赛总结
- noip2013 火柴排队
- c++ Stake 和 queue的用法
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 2016.7.16纪中比赛总结
- 字典的使用
- AFNetworking 3.0迁移指南