Linux学习笔记之(1):学习shell script
2016-10-20 09:19
239 查看
shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。
一.第一个script的编写与执行
执行:命令的执行从上而下,从左而右的分析与执行;命令、参数间的多个空白会被忽略、空白行也被忽略、[tab]键视为空格键;如果读到一个符号,就尝试执行该行命令,内容太多,可以使用\[ENTER]来扩展到下一行;#可作为批注。
1.直接命令执行:需要rx权限./shell.sh
2.以bash进程执行:需要r权限bash shell.sh或sh shell.sh
直接执行和bash/sh执行,script是在子进程的bash内执行的,执行结束后,子进程内的各项变量或操作将会结束而不会传回到父进程中;利用source执行脚本,在父进程中执行
编写:mkdir scripts;cd scripts gedit sh01.sh
#!/bin/bash
#程序内容说明
PATH=/bin/:/sbin/...............
export PATH
echo -e "HelloWorld! \a \n"
exit 0
第一行#!/bin/bash声明这个script使用的shell名称
第三行主要环境变量声明,最后一行告知执行结果,可用echo $?查看结果
数值运算:var=$((运算内容))
二.善用判断式
1.利用test命令的测试功能:检测文件是否存在和其相关属性
2.利用判断符号[]:数据判断,中括号内每个组件都需要空格键来分割,括号内的变量最好以双引号括起来,常量以单或双括号括起来。
3.shell script的默认变量:$0执行脚本文件名,$1 $2...接受的参数,$#代表后接参数的个数,$@代表"$1","$2"...之意,每个变量是独立的,$*代表$1c$2c$3c$4,c为分割符, 默认空格键;shift:造成参数变量号码移位,shift后面可接数字,表示拿掉最前面的几个参数的意思
三.条件判断式
1.利用if...then
单层/简单条件判断式:
if [条件判断式] ; then
.....
fi
多个条件判断式时[]&&[]代表and,[] || []代表or,&&和||与程序的连续执行区别开
多重/复杂条件判断式:
if [ ] ;then
...
else
...
fi
if [ ] ; then
...
elif [ ] ; then
...
else
...
fi
2.利用case...esac判断
多个既定内容的判断:
case $变量名 in
"第一个变量内容")
;;
"第一个变量内容")
;;
*)
exit 1
;;
esac
如/etc/init.d/syslog restart的重启
3.利用function功能
类似自定义执行的东西:function设置要写在程序的最前面
function fname () {
程序段
}
function也拥有内置变量,$0$1$2....
四.循环(loop)
1.不定循环while do done,until do done
while [condition]
do
程序段
done
condition成立时,进入循环
until [condition]
do
程序段
done
condition成立时,终止循环
2.固定循环for...do..done
for var in con1 con2 con3
do
程序段
done
知道循环几次
for ((初始值;限制值;执行步长))
do
程序段
done
五.shell script的追踪与调试
sh [-nvx] scripts.sh
-n:不要执行script,尽查询语法错误
-v:在执行script前,先将script内容输出到屏幕上
-x:将使用到的script内容显示到屏幕上,这是很有用的参数
shell script的学习,需要多看,多模仿并加以修改成自己的样式
一.第一个script的编写与执行
执行:命令的执行从上而下,从左而右的分析与执行;命令、参数间的多个空白会被忽略、空白行也被忽略、[tab]键视为空格键;如果读到一个符号,就尝试执行该行命令,内容太多,可以使用\[ENTER]来扩展到下一行;#可作为批注。
1.直接命令执行:需要rx权限./shell.sh
2.以bash进程执行:需要r权限bash shell.sh或sh shell.sh
直接执行和bash/sh执行,script是在子进程的bash内执行的,执行结束后,子进程内的各项变量或操作将会结束而不会传回到父进程中;利用source执行脚本,在父进程中执行
编写:mkdir scripts;cd scripts gedit sh01.sh
#!/bin/bash
#程序内容说明
PATH=/bin/:/sbin/...............
export PATH
echo -e "HelloWorld! \a \n"
exit 0
第一行#!/bin/bash声明这个script使用的shell名称
第三行主要环境变量声明,最后一行告知执行结果,可用echo $?查看结果
数值运算:var=$((运算内容))
二.善用判断式
1.利用test命令的测试功能:检测文件是否存在和其相关属性
2.利用判断符号[]:数据判断,中括号内每个组件都需要空格键来分割,括号内的变量最好以双引号括起来,常量以单或双括号括起来。
3.shell script的默认变量:$0执行脚本文件名,$1 $2...接受的参数,$#代表后接参数的个数,$@代表"$1","$2"...之意,每个变量是独立的,$*代表$1c$2c$3c$4,c为分割符, 默认空格键;shift:造成参数变量号码移位,shift后面可接数字,表示拿掉最前面的几个参数的意思
三.条件判断式
1.利用if...then
单层/简单条件判断式:
if [条件判断式] ; then
.....
fi
多个条件判断式时[]&&[]代表and,[] || []代表or,&&和||与程序的连续执行区别开
多重/复杂条件判断式:
if [ ] ;then
...
else
...
fi
if [ ] ; then
...
elif [ ] ; then
...
else
...
fi
2.利用case...esac判断
多个既定内容的判断:
case $变量名 in
"第一个变量内容")
;;
"第一个变量内容")
;;
*)
exit 1
;;
esac
如/etc/init.d/syslog restart的重启
3.利用function功能
类似自定义执行的东西:function设置要写在程序的最前面
function fname () {
程序段
}
function也拥有内置变量,$0$1$2....
四.循环(loop)
1.不定循环while do done,until do done
while [condition]
do
程序段
done
condition成立时,进入循环
until [condition]
do
程序段
done
condition成立时,终止循环
2.固定循环for...do..done
for var in con1 con2 con3
do
程序段
done
知道循环几次
for ((初始值;限制值;执行步长))
do
程序段
done
五.shell script的追踪与调试
sh [-nvx] scripts.sh
-n:不要执行script,尽查询语法错误
-v:在执行script前,先将script内容输出到屏幕上
-x:将使用到的script内容显示到屏幕上,这是很有用的参数
shell script的学习,需要多看,多模仿并加以修改成自己的样式
相关文章推荐
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第13章 学习 shell script
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第10章 vim 程序编辑器
- Linux学习笔记-shell script
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第11章 认识与学习 bash
- 【Linux从零开始】:4.学习shell script前过度阶段的一些杂乱笔记
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第12章 正则表达式与文件格式化处理
- 转载:写得蛮好的linux学习笔记
- linux学习笔记
- Linux学习笔记
- 写得蛮好的linux学习笔记(压缩命令,vi一般用法,认识SHELL,正规表示法)
- rh9 linux服务配置学习笔记---------Apache
- Linux下汇编学习笔记之三--(Professional Assembly Language)
- 写得蛮好的linux学习笔记(linux目录架构)
- Linux学习笔记-与系统管理有关的命令[转帖]
- Linux 学习笔记( LINUX运行的硬件基础1)
- rh9 linux服务配置学习笔记--------dns
- linux学习笔记
- 学习笔记-Linux 系统管理学习笔记(一)
- Linux基础知识学习笔记(一)--文件系统的权限管理
- 学习嵌入式Linux系统的笔记和体会