【Linux基础总结】Shell 基础编程

Shell 基础编程


重启虚拟机遇到磁盘损坏如何解决

【Linux基础总结】Shell 基础编程_第1张图片
【Linux基础总结】Shell 基础编程_第2张图片
【Linux基础总结】Shell 基础编程_第3张图片


Shell编程中变量的声明、引用及作用域

Shell程序

  • 概述
    文件形式存放批量的Linux命令集合,该文件能够被Shell解释执行,这种文件就是Shell脚本程序
    通常由一段Linux命令Shell命令控制语句注释语句组成

  • 编写
    Shell脚本是纯文本文件,可以使用任何文本编辑器编写
    Shell脚本通常以.sh作为后缀名

  第一行一般是指定用哪个程序来编译和执行脚本
  	#!/bin/bash			#!/bin/sh			->(除了第一行,剩下的用#都表示是注释)

 
变量

  • 概述
    变量名必须以字母或下划线开头,后面可以跟字母、数字或下划线,任何其他字符都标志着变量名的结束
    变量名对大小写很敏感
    eg:
    【Linux基础总结】Shell 基础编程_第4张图片
  • 类型
    根据变量的作用域,变量可以分为本地变量环境变量
    本地变量只在创建它们的Shell程序中可用,而环境变量则在Shell中的所有用户进程中可用,通常也称为全局变量
  • 赋值
    等号两边不能有空格
    如果要给变量赋空值,可以在等号后面跟一个换行符
  显示变量的值
  	echo $variable$		或		echo${variable}

  清除变量
  	unset variable

  显示所有的变量
  	set

  环境变量(全局变量)按照惯例需要大写
  	export LANG

Shell编程中位置参量使用和命令执行状态码

位置参量

  • 概述
    位置参量是一组特殊的内置变量,通常被Shell脚本用来从命令行接受参数,或被函数用来保存传递给它的参数
    执行Shell脚本时,用户可以通过命令行向脚本传递信息,跟在脚本名后面的用空格隔开的每个字符串都称为位置参量。
    在脚本中使用这些参数时,需通过位置参量来引用
		例如:
			$1表示第一个参数,$2表示第二个参数
			以此类推,直到$9以后需要用花括号把数字括起来,如第10个位置参量以${10}的方式来访问
  • 位置参量列表
    【Linux基础总结】Shell 基础编程_第5张图片
  • 示例:
    【Linux基础总结】Shell 基础编程_第6张图片
    【Linux基础总结】Shell 基础编程_第7张图片
  • 给位置参量传递参数
  Shell-test.sh This is Peter

  如果位置参量中有空格,则需要用到双引号
  Shell-test.sh This is "Peter Piper"

Shell编程中数组、data和cal命令

数组

  数组定义
  	arr=(math english chinese)
  	
  数组初始化
  	arr=(math english chinese)
  	
  数组引用
  	引用变量:${arr[0]}
  	数组个数:${#arr[*]}
  	所有元素:${arr[*]}
  	
  数组赋值
  	arr[0]=chemical	
  • 示例
    【Linux基础总结】Shell 基础编程_第8张图片
     

date命令
【Linux基础总结】Shell 基础编程_第9张图片
【Linux基础总结】Shell 基础编程_第10张图片

 
cal命令

  查看系统当前月份日历表
  	$ cal
  	
  查看指定年份所有日历表
  	$ cal year
  	
  查看指定年月日历表
  	$ cal month year
  • 示例
    【Linux基础总结】Shell 基础编程_第11张图片
    【Linux基础总结】Shell 基础编程_第12张图片
    【Linux基础总结】Shell 基础编程_第13张图片

Shell中判断表达式与if语句的使用

判断表达式

  • 常用判断命令
  判断「文件类型」
  	判断文件是否存在
  	  test -e fileName
  	  		(-e FILE
              		FILE exists)
              
  	判断文件是否存在且是否为文件
  	  test -f fileName
  	  		(-f FILE
              		FILE exists and is a regular file)
              		
  	判断文件是否存在且是否为目录
  	  test -d fileName
  	  		(-d FILE
              		FILE exists and is a directory)
-------------------------------------------------------------------------------------
  判断「文件权限」
  	判断文件是否存在且是否具有可读权限
  	  test -r fileName
  	  		(-r FILE
              		FILE exists and read permission is granted)
              		
  	判断文件是否存在且是否具有可写权限
  	  test -w fileName
  	  		(-w FILE
              		FILE exists and write permission is granted)
              		
  	判断文件是否存在且是否具有可执行权限
  	  test -x fileName
  	  		(-x FILE
              		FILE exists and execute (or search) permission is granted)
-------------------------------------------------------------------------------------
  判断两个整数之间的大小关系
  	test n1 -eq -n2			->(是否相等	-equal)
  	test n1 -ne -n2			->(是否不相等	-not equal)
  	test n1 -gt -n2			->(n1是否大于n2	-greater than)
  	test n1 -lt -n2			->(n1是否小于n2	-less than)
  	test n1 -ge -n2			->(n1是否大于等于n2	-greater than and equal)
  	test n1 -le -n2			->(n1是否小于等于n2	-less than and equal)
-------------------------------------------------------------------------------------
  判断字符串数据
  	test -z string			->(字符串是否为0		为0则为空字符串	-zero)
  	test -n string			->(字符串是否不为0	-nonzero)(-n可省略)
  	test str1=str2			->(判断str1和str2是否相等)
  	tesr str1!=str2			->(判断str1和str2是否不等)
-------------------------------------------------------------------------------------
  • [ ] 符号
    除了test外,还可以利用 [ ] 进行数据的判断
  比如想要知道$HOME这个变量是否为空
  	[ -z "$HOME" ];echo $?
  • 注意
    因为中括号用在很多地方,包括通配符正则表示法等,所以如果要在bash的语法当中使用 [ ] 作为Shell的判断式时,必须要注意 [ ] 的两端需要有空格符来分隔

 
if语句

  • 单层、简单条件判断式
  if [ 条件判断式 ]; then
  		当条件判断式成立时,可以进行的指令工作内容
  fi(结束if语句)
  • 多重,复杂条件判断式
  if [ 条件判断式 ]; then
  		当条件判断式成立时,可以进行的指令工作内容
  else
  		当条件判断式不成立时,可以进行的指令工作内容
  fi
------------------------------------------------------------------
  if [ 条件判断式1 ]; then
  		当条件判断式1成立时,可以进行的指令工作内容
  elif [ 条件判断式2 ]; then
  		当条件判断式2成立时,可以进行的指令工作内容
  ...
  else
  		当所有的条件判断式不成立时,可以进行的指令工作内容
  fi

Shell编程中for循环和while循环

for循环

  • 格式1
  for var in con1 con2 con3
  do
  		程序段
  done

  $var变量在for循环中:
  		第一次循环时,$var的内容为con1
  		第二次循环时,$var的内容为con2
  		第三次循环时,$var的内容为con3
  		...
  • 示例
for animal in tiger lion elephant
do
	echo "There are ${animal}s...."
done
  • 格式2
#  直接用例子演示
num=10
s=0
for((i=0;i<${num};i=i+1))
do
	s=$((${s}+${i}))
done

echo ${s}

 
 
while循环

  • 格式
  while [ condition ]
  do
  		程序段落
  done					====>当 [ condition ] 成立时,就进行循环,直到不成立为止
------------------------------------------------------------------------------------------
  until [ condition ]
  do
  		程序段落
  done					====>当 [ condition ] 不成立时,就进行循环,直到成立为止  
  • 逐行读取文件或命令
  cat file | while read line
  do
  		echo $line
  done
----------------------------------------------------------------
  cat 'ls ./*.txt' | while read line
  do
  		echo $line
  done

你可能感兴趣的:(【Linux基础总结】Shell 基础编程)