shell复习笔记

shell复习笔记

shell概念
1. 
 ls -l /bin/*sh  #查看系统中的脚本解释器。
2.
 #!/bin/bash  #开头第一行的#,不是注释,其他都是
 #指定由哪一个解释器来执行脚本中的文件。  
3.
 sh test.sh    #指定解释器sh执行。sh是bash的软连接。
 bash test.sh  #指定解释器bash执行。
 ./path/test.sh #指定路径执行
4.
 sh test2.sh  #用sh执行,系统会启动新的进程执行子脚本,执行完就返回父shell,
              #变量或函数无法保留。
 . test2.sh   #通过source或“.”加载执行过的脚本,系统不会新建进程执行子shell,
 .后面空格键   #都是在当前Shell中执行脚本,因此在脚本结束之后,
              #脚本中的变量(包括函数)值在当前Shell中依然存在.
              
shell-的变量
1.
 $A 和 ${A}  #功能是一样的。推荐使用后者的语法或"${A}" 的用法。
 ${WEEk}day  #若变量和其他字符组成新的变量就必须给变量加大括号{}。
 
2.
环境变量
 export 变量名=value          #第一种方法
 变量名=value;export 变量名   #第二种方法。注意也可以一次导出多个变量名--> export 变量名 变量名 变量名
 declare -x  变量名=value     #第三种方法
 
3.
 用env(printenv)或set显示默认的环境变量
 用unset取消本地变量和环境变量
 unset aa   #只是临时生效,退出再登录就恢复了。
 
4.
shell局部变量
 普通字符串变量定义
 变量名=value    #解析输出,适用简单连续的数字、字符串、路劲名等
 变量名=‘value’  #原样输出,适合于定义显示纯字符串。
 变量名=“value”  #解析输出,适合于字符串中附带有变量的内容的定义。
 a=192.168.1.2-$a    执行结果 a=192.168.1.2-192.168.1.2
 b='192.168.1.2-$a'  执行结果 b=192.168.1.2-$a
 c="192.168.1.2-$a"  执行结果 c=192.168.1.2-192.168.1.2-192.168.1.2
 习惯:数字不加引号,其他默认加双引号。
 
5.
把一个命令当做变量
#用 反引号 的方法
 cmd=`ls`     //把命令ls,赋给cmd
 echo $cmd    //输出cmd命令就相当于执行 ls命令
 bin boot cdrom dev etc home initrd.img initrd.img.old lib lib32 lib64 
#用 $() 的方法                
 $ cmd2=$(ls)    //把命令ls,赋给cmd2
 
6.
shell-的特殊变量-位置变量
 $0  #获取当前执行的shell脚本的文件名,包括路径
 $n  #获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,
     #如果n大于9,用大括号括起来${10}.
 $#  #获取当前shell命令行中的参数的总个数.
 
7.
shell-的特殊变量-进程状态变量
 $$  #获取当前shell的进程号(pid)
 $?  #获取执行上一个指令的返回值(0为成功,非零为失败)
 
8.
shell-的特殊变量-难点理论
$*和$@的区别例子
 $*  #将所有的命令行所有参数视为单个字符串,等同于“$1$2$3”
 $@  #将命令行每个参数视为单独的字符串,等同于"$1" "$2" "$3"。
     #这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。
     
shell-变量的字串应用技术
aa="I  am  scajy" #定义变量
1.
 echo ${#aa}  #返回字符串aa变量字符串的长度
 10
2.
 echo ${aa:2}  #截取aa变量字符串从第2个字符之后开始取,默认取后面字符的全部
 am scajy
3.
 echo ${aa:2:2} #截取aa变量字符串从第2个字符之后开始取,取两个字符
 am
4.
 echo ${aa#I}  #从变量aa开头开始删除最短匹配 "I“ 子串
 am scajy
5.
 echo ${aa%scajy} #从变量aa结尾开始删除最短匹配 “scajy” 子串
 I am
6.
 echo ${aa/I/520}  #使用520字符串,来代替变量aa第一个匹配的I字符串
 520 am scajy
7.
 echo ${aa/%scajy/520} #先删除scajy,再替换成520
 I am 520
8.
 aa="I am scajy,I am scajy,I am scajy,I am scajy "
 echo ${aa//I am/520 1314} #使用520 1314 字符串,来全部替换变量aa开头开始匹配的I am 字符串
 520 1314 scajy,520 1314 scajy,520 1314 scajy,520 1314 scajy
 
shell-变量的数值运算符-计算双括号(())的使用
1.
(())用法:shell的算术运算符合都置于"$(("......."))"的语法中。
 echo $((a+=1))  #赋值运算符(相当于a=a+1)
 echo $((3>2))   #比较大小,3大于2,得出结果为1,在(())里比较大小,1为真,0为假
 echo $((a++))   #先输出a的值,因为a为10,所以输出10
 echo $((++a))   #先++,在输出值,所以是11
 echo $(( $myvar + 1  ))  #( ( ) ) 两边有几个空格不敏感,也可以没有。带变量计算
 
let命令的用法:let 赋值表达式
1.
 let赋值表达式功能等同于:((赋值表达式))
 i=2
 let i=i+8
 echo $i  结果 10
 

expr(evaluate expressions)命令的用法:
1.
 expr命令一般用于整数值,当也可用于字符串,用来求表达式变量的值,同时expr也是一个手工命令行计算器。
2.
 expr 2 + 2   #结果 4   运算符左右要有空格
 expr 2 \* 2  #结果 4   乘号必须用反斜线屏蔽其特定含义。
3.
 expr $[$a+$b]表达式形式,其中$a $b可以为整数值
 expr $[2+3]
4.
 例子:持续等待输入连续判断,整数就退出,错误继续判断输入
 while true
 do
 read -p "pls input:" a
    expr $a + 0 &>/dev/null
        if [ $? -eq 0 ]
            then
             echo int
             exit 1
        else
            echo chars
        fi
5.
  echo $(expr length "$chars") #通过expr计算字符串的长度

shell-变量的数值运算-bc-typeset-中括号等方法介绍
 1.
 bc命令的用法:
 bc是unix下的计算器,它也可以用在命令行下面:
 echo 3.5+5|bc  结果:8.5
2.
 typeset命令的用法:使用整数变量直接进行计算  
  typeset -i A=1 B=3
  A=A+B
  echo $A ----> 4
3.
 $[ ]的用法: echo $[3+2] --> 结果 5

shell-变量输入内置read命令详解
1.
 格式:read [参数] [变量名]
 read -t 5 -p "please input two nomber:" a1 a2 
 #获取两个参数给变量a1 a2,-t 等待5s输入时间,-p 读之前会打印提示符"please input two nomber:"
 -n:字符数:read命令只接受指定的字符数,就会执行
 -s:隐藏输入的数据,适用于机密信息的输入

shell-添加条件测试的多种方法语法介绍与简单实战
1.条件测试语法的三种格式
 # -f  若文件存在并且为普通文件则返回 真 
 # -r  文件存在并且可读则 真
 test -f filename && echo true ||echo false    #条件测试语法 格式1
 [ -f filename ] && echo true ||echo false     #条件测试语法 格式2
 [[ -f filename ]] && echo true || echo false  #条件测试语法 格式3

shell-字符串及整数操作符讲解与多实践
1.字符串测试操作符 一元
 [ -z "$myvar" ] # -z 比较字符串长度是否等于零,如果等于零则为为真,zero
 [ -n "$myvar" ] # -n 比较字符串长度是否不为零,如果不为零则为真
2.整数二元比较操作符
 [ ]    [[]]           #字母和符号在不同的括号中使用
 -eq     ==   等于
 -ne     !=   不等于
 -gt     >    大于
 -ge     >=   大于等于
 -lt     <    小于
 -le     <=   小于等于
 if[ "$a" \< "$b" ] #在单[ ]中需要转义,因为shell也用 “<” 和 “>” 重定向
 if[ "$a" \> "$b" ]
 2.1
 二元数字比较:
 [ 2 > 1 ] && echo 1 ||echo 0      结果:1
 [ 2 -gt 1 ] && echo 1 ||echo 0    结果:1
 2.2
 二元字符比较:
 [ "a" \> "bc" ] && echo 1 ||echo 0  结果:0
 [ "a" \< "bc" ] && echo 1 ||echo 0 结果:1

shell-逻辑操作符讲解与文件条件测试多范例
 1.操作符 #注意括号两端,必须要有空格。
 [ ]  [[]]         #字母和符号在不同的括号中使用
 -a    &&      与
 -o    ||!     !       非
 2.条件测试举例
  [ -f "$file1" ] && echo 1 || echo 0  
  #变量$file加了双引号,这是编程的好习惯,可以防止很多意外的错误发生。
  
shell流程控制之if语句
 1.
 if [ 条件判断式 ];then		#如果条件成立,执行下面的程序
	程序
 fi							#if语句结束的标志
 或者
 if [ 条件判断式 ]     #中括号与条件判断式直接必须有空格
	then
	程序
 fi
 2.
 if [ 条件判断式 ];then
    ........................
 else
	.......................
 fi
 3.
 if [ 条件判断式1 ];then
	..................
 elif [ 条件判断式2 ];then
	..................
 else
	..................
 fi
 
shell流程控制之多分支case语句
 1.
 case $变量名 in
 "值1") 如果变量的值等于值1,则执行程序1;;
 "值2") 如果变量的值等于值2,则执行程序2;;
 ......
 *) 如果变量的值都不是以上的值,则执行此程序;;
 esac

shell流程控制之while循环
 1.
 while [ 条件判断式 ]
 	 do
		程序
 	 done

shell流程控制之until循环
 1.概述:
 utile循环时,只要条件判断式不成立则进行循环。一旦条件成立,则终止
 until [ 条件判断式 ]
	do
		程序
	done

shell流程控制之for循环
 1.
 for ((初始值;循环控制条件;变量变化))
	do
		程序
	done


Shell - bash基本功能之管道符、通配符
 1.
 多命令顺序执行:
 执行符   格式
 ;     命令1;命令2   #按照顺序一个一个执行。某个命令报错,会忽略,继续执行下面的命令
 &&    命令1&&命令2  #当命令1正确执行时,才会执行命令2。
 ||    命令1||命令2  #当命令1执行错误时,会执行命令2。1正确则只执行1,不执行2。
 2.
 管道符
 命令1 | 命令2	命令1的正确输出作为命令2的操作对象
 3.
 通配符
 ?     匹配一个任意字符
 *     匹配0或任意多个任意字符,也就是可以匹配任何内容
 []    匹配中括号中任意一个字符
 [-]   匹配中括号中任意一个字符,-代表范围。如:[a-c]
 [^]   逻辑非,表示匹配不是中括号内的字符

bash中一些其他的特殊符号
 1.
 ''	  单引号。在单引号中的所有特殊符号都没有特殊含义
 ""	  双引号。在双引号中的特殊符号都没有特殊含义,
      但是“$”、“·”和“\”是例外,拥有“调用变量”、“引用命令”、“转义符”的特殊含义。
 $()  和反引号一样,用来引用系统命令
 $    用于调用变量的值
 \    转义符

Shell - bash基本功能之输出、输入重定向
 1.
 标准输入输出
 文件描述符:
  0 代表标准输入设备,     /dev/stdin
  1 代表标准输出设备, 	 /dev/sdtout
  2 代表标准错误输出设备   /dev/sdterr
 2.
 输出重定向
  2.1
  标准输出重定向:
  命令 > 文件:以覆盖的方式,把命令的正确输出输出到指定的文件或设备中。
	   			##文件不存在则创建,文件存在则覆盖
  命令 >> 文件:以追加方式,把命令的正确输出输出到指定的文件或设备中。
  2.2
  标准错误输出重定向
  错误命令 2> 文件:以覆盖的方式,把错误的输出输出到指定的文件或设备中
  错误命令 2>> 文件:以追加的方式,把错误的输出输出到指定的文件或设备中
  2.3
  正确输出和错误输出同时保存
  命令  >  文件 2>&1:覆盖,把正确输出和错误输出都保存在同一个文件中
  命令 >>  文件 2>&1:追加,把正确输出和错误输出都保存在同一个文件中
  命令 &>  文件:覆盖,把正确输出和错误输出都保存在同一个文件中
  命令 &>> 文件:追加,把正确输出和错误输出都保存在同一个文件中
  命令>>文件1 2>>文件2:把正确的输出追加到文件1中,把错误的输出追加到文件2中
  2.4
  特殊文件:/dev/null
  命令 &>/dev/null  #黑洞,垃圾站。不想看到命令的结果,就把命令重定向到/dev/null中
3.
输入重定向
 一般输入设备总是键盘,如果把文件的内容作为输入,这个就是“输入重定向”
 3.1
 wc命令 : 
 wc 【选项】【文件名】
     无		输入字符,ctrl+d结束,最后会统计你输入了多少行,单词,字符
     -c		统计字节数
     -w		统计单词数
     -l		统计行数
 3.2
 输入重定向:
  命令 < 文件:把文件作为命令的输入
  wc < test.log  # wc统计test.log文件
  命令 << 标识符:把标识符直接内容作为命令的输入
  wc << t #wc统计,遇到t字符则停止

shell编程之正则表达式
 正则表达式的作用:
  在文件中提取有用的字符串。字符串的模式分割、匹配、查找及替换
 
 余下未记录
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值