shell编程---(二)

杂乱模块:$?  ---  上一次的结果码

对脚本进行检测语法错误
bash -n shell.sh  脚本
bash -x shell.sh  脚本,单步执行

date +%s  显示当前秒数
TIMEDAYS=$
提前退出脚本
exit

stat 获取文件属性

一、shell中实现算术运算
A=2  B=5
1、let  A + B(算术运算表达式)
2、$[算术运算表达式]    C=$[ $A + $B ]
3、$((算术运算表达式))   C=$(($A + $B))
4、expr  算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用    C=`expr $A + $B`

二、测试方法(整数测试)
[ expression ]
[[ experssion ]]
text expression

1、bash中常见的条件测试(注意空格)
整数测试
-gt   >
-ne  != 
-eq  ==
-ge   <
-lt  >=

-le  <=


INT1=63
INT2=77
[ $INT1 -eq $UNT2 ]
[[ $INT1 -eq $UNT2 ]]
test $INT1 -eq $UNT2


2、文件测试
-e FILE  测试文件是否存在
-f FILE  测试文件是不是不同文件
-d FILE  测试指定路径是不是目录
-r FILE  测试当前用户对指定文件是否可读
-w FILE  测试当前用户对指定文件是否可写
-x FILE  测试当前用户对指定文件是否可执行
[ -e FILE ]
[ -r FILE ]

三、多分枝的if语句
if 判断语句1; then
  statemen1
elif 判断语句1; then
  statemen1
elif 判断语句1; then
  statemen1
elif 判断语句1; then
  statemen1
else
   statemen1
fi

四、bash变量的类型
本地变量
环境变量
位置变量
  

传递参数  $1,$2...
特殊变量
 $?  
 $#  参数的个数
 $*  参数列表(一个字符串)
 $@  参数列表(多个字符串)

五、文本处理
grep
sed(数据流编辑器)
awk

六、sed基本用法
sed:Stream Editor
行编辑器(全屏编辑器 vi)
并不直接处理文件本身
sed : 模式空间
默认不编辑源文件,仅对模式空间中的数据进行处理
处理后,将模式空间显示到屏幕


sed [options] 'AddressCommand' file...
-n:静默模式(不显示模式空间)
-i:直接修改原文件
-e SCRIPT -e SCRIPT -e SCRIPT ...:同时执行多个脚本
-f /path/to/sed_script :
-r :使用扩展的正则表达式

Address
1、StratLine   EndLine
比如:1-100
$:最后一行
2、/Pattern(正则表达式)/
 /^root/
3、/pattern1/,/pattern2/
第一次被模式1匹配到的行开始,至第一次被模式2匹配到的行结束,这中间的所有行
4、LineNumber
指定的行
5、StartLine  +N
从StartLine开始,向后的N行


Command
d:删除符合条件的行
p:显示符合条件的行
a \string:在指定的行后面追加新行,内容是string
\n可以用来换行
i \string:在指定的行前面追加新行,内容是string
number...r file:将制定文件的内容添加到指定文件number行后面
w file:将制定文件的范围内的内容添加到指定文件
s/pattern/string/修饰符:查找并替换(默认只替换是每行中第一次被模式匹配到的字符串)   1,$全文
加修饰符 g:全局替换   i:忽略字符大小写

s/// == s###
s@/@#@g
&:引用模式匹配整个串

^\/ == /

七、字符测试
==测试是否相等,相等为真
!=
>
<
-n string :测试指定字符串是否为真,空则真
-s string :与上式相反

A=hello
B=hello
[ $A = $B ]
echo "scale=2;111/22;" |bc

八、循环控制结构
for  while  until

for 变量 in 列表:do
  运算
done

九、seq  列表
‘seq 起始数 步进长度  结束数’:命令替换

declare  -i SUM=0
   integer(整数)

-x(环境变量)
十、文本编辑器,字处理器
ASCII
nano  文本编辑器(全屏)
sed   文本编辑器

vim模式
编辑模式(命令模式)
输入模式
末行模式
默认处于编辑模式

模式转换
编辑-->输入:
i:在当前光标所在字符的前面,转为输入模式
a:在当前光标所在字符的后面,转为输入模式
o:在当前光标所在字符的上一行,转为输入模式

输入-->编辑
esc键


编辑-->末行
:
末行-->编辑
esc键esc键

vi:Visual Interface
vim:VI iMproved
全屏编辑器:模式化编辑器
(一)、打开文件
vim file(存在即打开,不存在就创建)
vim +12 file  打开进入第12行
vim + file 打开定位至最后一行
vim +/PATTERN  打开文件,定位到匹配到的第一行的位置
(二)、关闭文件
1、末行模式下关闭文件
w保存
q退出(不保存)
wq保存并退出
q!不保存并退出
w!强行保存(管理员特有)
2、编辑模式下退出
ZZ(保存并退出)
(三)、移动光标
h:左
l:右
j:下
k:上


attention:这是一些shell编程的小案例:

#!/bin/bash
USERNAME=user1
USERID='id -u $USERNAME'
GROUPID='id -g $USERNAME'
if[$USERID -EQ $GROUPID];then
   echo "good guy"
else
   echo  "badguy"
fi


#!/bin/bash
FILE=/etc/inittab
if [ -e $FILE ]; then
  echo "ok"
else
  echo "not find file"
fi 




#!/bin/bash
FILE=/etc/inittab
if [ ! -e $FILE ]; then
  echo ""
  exit 1
fi


if [ -f $FILE ];then
  echo "common"
elif [ -d $FILE ];then
  echo "dir"
else
  echo "unknown"
fi



你可能感兴趣的:(shell编程---(二))