2017年11月2日 10:42:05
CHAPTER 13
第一行注释用的bash执行脚本
第二行注释程序的用途
第三行注释编写时间,作者,版本
第四行注释修改历史,时间,作者,版本
切换命令行界面和窗口界面:init 3为命令行界面,init 5为窗口界面。
SHELL编程
echo $a#显示变量内容,a为变量名
a=b #将变量a设置为b,含有特殊字符时如空格,需要加上双引号(引号内的内容就是变量内容)或者单引号(引号内的为字符,无特殊符号)
unset a#取消变量a
a=1 #a变量为1
b=${a}2#b变量在a的基础上再多个字符2,、
a=1
b=’$a’#内容为$a
b=”$a”内容为1
read a#从用户的输入中读取变量a
[-t] n#n秒内等待输入
[-p] “ ”#prompt,输入时给出的提示,双引号内为提示的内容
declare [-a,i,x,r] 变量名 #默认是字符串
[-a]# 将变量定义为数组
[-i]#integer将变量定义为整数
[-x]#将变量变成环境变量
[-r]#readonly 将变量设置为只读
设置数组:
var[0]=“123”;
读取数组: echo ${var[0]}
登录界面: /etc/issue
远程登录界面:/etc/issue.net
数据重定向:>#覆盖写入,>>附加写入,
命令执行:a;b;c #a执行完成之后,b执行,b结束之后c
a&&b #a执行完成且正确,则b,否则不执行
b||c #a执行完成且正确,b不执行。a执行完成且错误,则执行b
选取命令:cut –d ‘分割字符’ –f i,j #以行为单位,以分割字符为特征切割字符串,并显示第i和j个
寻找字符串:grep [-a,c,I,n,v] ‘字符串’ filename
[-a] #将binary文件以text文件的方式查找
[-c] #计算查找到字符串的次数
[-i] #忽略大小写
[-n]#输出行号
[-v]# 反向选择,即没有目标字符串的行
双向重定向:tee [-a ] 文件名 #将数据不仅重定向到文件中且继续在屏幕上输出
[-a] #附加,没有则覆盖
shell script
1、 filename=${fileuser:-“filename”}
# 如果fileuser未配置或者为空,则filename=”filename”,否则filename=${fileuser}
2、 date1=${date –date=’2 days ago’ +%Y%m%d }
script执行差别,sh 是在子进程中执行,子进程的变量不会返回给父进程;
source是在父进程中,执行会影响父进程的资源
$((运算内容)) #括号之间不能有空格
判断符号:[]
[ “$a” == “d” -o “$a” == “c” ] #判断变量a是否为d或者c,中括号之间的空格不能少
script中的默认变量: 如命令为: sh sh01.sh a bc
$0:被执行的文件名
$#: 命令后的参数个数,为3,a,b,c
$@:所有的参数:a b c
$1:第一个参数,a
$2:第二个参数,b,依次类推
shift n:拿掉前n个参数
条件判断式:
if [ 条件判断 ]; then
语句
fi #反过来写代表结束
-----------------------------------------------------------------------------------------
if [ ``` ]; then
```````````
else
``````````
fi
------------------------------------------------------------------------------------
if [`````]; then
`````````````````
elif [`````]; then
else
`````````
fi
declare的使用:
script中计算
declare –i date_total_s=$(($date_dem-$date_now))
# date_dem,date_now为变量
script中执行命令:
declare –I date_now=”$(date +%s)”
CASE语句:
case $变量名称 in
“第一个变量内容”)
程序段
;;
“第二个变量内容”)
程序段
;;
*) #表示其他情况
程序段
;;
esac
function学习:
function 函数名 () {
程序段
}
调用:函数名 参数1,参数2,···
函数体中取得参数的方法:$0,$1…含义类似
循环结构:
while [ 判断式 ]
do
循环体
done
until [ 判断式 ]
do
循环体
done
for 循环变量 in 第一次循环变量的值 第二次循环变量的值 ······
do
循环体
done
for ((initial_value;limited_value;step))
do
#program_segment
done
shell script的调试:
sh [-nvx] scripts.sh
n:不执行,仅查询语法的问题,有错误才显示
v:在执行前将内容输出在屏幕上,先整体输出再执行
x:将使用到的SCRIPT内容显示在屏幕上,输出一行执行一行,内容前有”+”
CHAPTER 14
CHAPTER 15
CHAPTER 16
CHAPTER 17
ctrl –z将命令放入后台执行
jobs [-lrs]
l:显示所有后台的命令与PID
r:显示正在执行的后台命令
s:显示暂停的后台命令
CHAPTER 18