Linux操作系统学习笔记整理(5)

Shell编程中的数组变量

  • 练习:arr.bash
    #! /bin/bash
	#定义数组变量    users就是数组变量名
	#()里是放在数组变量中的值,用空格隔开
	users=("zs" "ls" "ww")
	#下标   0    1    2

	#根据下标从数组变量中取出值  语法:数组变量名[下标]
	echo ${users[0]}    #zs
	echo ${users[1]}    #ls
	echo ${users[2]}    #ww
	#将数组变量中的所有值输出
	echo ${users[*]}    #zs ls  ww

	#获取数组变量的大小(数组变量中的值的个数) 语法:#数组变量名[*]
	echo ${#users[*]}   #3
	#输出下标0对应的值的长度
	echo ${#users[0]}   #2

	#修改数组变量中的值  将"ls"修改为"xiaohong"
	users[1]="xiaohong"
	echo ${users[*]}    #zs xiaohong ww
	echo ${#users[1]}   #8
	echo ${users[1]}    #xiaohong

	#复制users数组变量的全部内容到一个新数组变量us中
	#定义us数组变量  us=("")
	#users数组变量的全部内容  ${users[*]}
	#完成复制,将${users[*]}放入""里就可以了  
	us=("${users[*]}")
	#将us数组变量中的全部内容输出
	echo ${us[*]}

Shell编程中的特殊变量

  • 特殊变量由bash自动定义和赋值,用户不能修改。
    $?        前一个命令的执行状态。0表示程序执行成功;1表示程序执行失败
	$#        命令行参数的个数,不包括命令行本身
	$0        代表命令本身
	$1-$n     代表具体的命令行参数,当n大于9时,需要用{}括起来
	$*        全部的命令行参数

练习:spec.bash

	#! /bin/bash

	#Shell程序中的特殊变量

	#执行一个删除命令
	rm /home/wufc/a/a.txt
	echo $?     #前一个命令的执行状态  0表示成功  1表示失败

	#特殊变量:$#表示命令行中的参数个数,不包括命令本身的
	echo $#     #在命令输入./spec.bash a b c,输出的结果为3

	#特殊变量:$0表示命令本身
	echo $0     #在命令行输入./spec.bash a b c,输出的结果为./spec.bash   
	#特殊变量:$1~$n表示具体的参数  9以后的数字需要放在{}里
	echo $1      #a 
	echo $2      #b
	echo $3      #c
	echo $4      #空白,因为就3个参数
	echo $9      #空白
	echo ${10}   #空白
	#用命令行输入的3个参数创建一个数组变量
	strs=($1 $2 $3)
	echo ${strs[*]}    #将数组变量strs中所有的内容输出

	#特殊变量:$*表示所有的命令行参数
	echo $*

Shell程序中的3个结构体

  • 顺序结构
  • 分支结构
  • 循环结构

顺序结构

  • 从上往下依次执行
  • 练习:shunxu.bash
   cd
   mkdir www
   cd www
   touch w.txt
   ls
   pwd

分支结构

  • java语法中的分支结构
   if(a>90){
   		语句
   }else if(条件表达式){
   		语句
   }else if(条件表达式){
  		语句
   }else{
  		语句
   }
  • Shell程序中的分支结构
   if    条件表达式  then
         语句
   elif  条件表达式  then
         语句
   elif  条件表达式  then
         语句
   else
         语句
   fi
  • 判断真假的条件表达式的语法:
   test 表达式   或者   [ 表达式 ]

强调:表达式的左右两边要加空格

  • 表达式:
  • 与,或,非的判断:
   ! 表达式 对表达式的值取反
   条件1  -a  条件2   与/并且
   条件1  -o  条件2   或/或者
  • 字符串是否为空的判断:
   -z  string   
   -n  string
  • 判断字符串是否相等:
   string1 = string2
   string1 != string2
  • 判断整数之间的关系:
   整数1   -eq   整数2     等不等  
   整数1   -ge   整数2     大于等于 
   整数1   -gt   整数2     大于
   整数1   -le   整数2     小于等于
   整数1   -lt   整数2     小于
   整数1   -ne   整数2     不相等
  • 其他:
   -d file 判断file是否为目录
   -e file 判断file是否为文件
  • 练习:biaodashi.bash
    #! /bin/bash

	#演示Shell中的表达式语法
	#使用test判断表达式3 -ge 2的真假
	test 3 -gt 2
	echo $? #输出结果为0,表示test 3 -gt 2的判断结果为真
	#另外一种写法
	[ 3 -gt 2 ]
	echo $? #输出结果为0,表示[ 3 -gt 2 ]的判断结果为真

	# ! 表达式:取反 
	test ! 3 -gt 2 #对表达式3 -gt 2进行取反,输出结果为1,表示test判断 ! 3 -gt 2的结果为假
	echo $?
	#使用另外一种写法
	[ ! 3 -gt 2 ]
	echo $? #输出结果为1

	#定义两个变量i和j,都赋值为5
	i=5
	j=5
	#判断表达式i小于等于j的结果
	test ${i} -le ${j}
	echo $? #输出结果为0,表示上面的test判断的表达式的结果为真

	#使用 -a 或者 -o
	test 1 -gt 2 -a 3 -le 1
	echo $? #输出结果为1,表明上面test判断的表达式的结果为假的

	#比较一下字符串
	test "abc" = "abc" #判断字符串"abc"等于字符串"abc"吗,判断结果为真
	echo $?    #输出结果为0
	test "abc" != "abc" #判断字符从"abc"不等于字符串"abc"吗,判断结果为假
	echo $? #输出结果为1

	test -d /home/wufc/a
	echo $? #输出0,说明a是目录
	test -d /home/wufc/a.txt
	echo $? #输出1,说明a.txt不是目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值