zoukankan      html  css  js  c++  java
  • 【Linux基础总结】Shell 基础编程

    Shell 基础编程


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

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


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

    Shell程序

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

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

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

     
    变量

    • 概述
      变量名必须以字母或下划线开头,后面可以跟字母、数字或下划线,任何其他字符都标志着变量名的结束
      变量名对大小写很敏感
      eg:
      在这里插入图片描述
    • 类型
      根据变量的作用域,变量可以分为本地变量环境变量
      本地变量只在创建它们的Shell程序中可用,而环境变量则在Shell中的所有用户进程中可用,通常也称为全局变量
    • 赋值
      等号两边不能有空格
      如果要给变量赋空值,可以在等号后面跟一个换行符
      显示变量的值
      	echo $variable$		或		echo${variable}
    
      清除变量
      	unset variable
    
      显示所有的变量
      	set
    
      环境变量(全局变量)按照惯例需要大写
      	export LANG
    

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

    位置参量

    • 概述
      位置参量是一组特殊的内置变量,通常被Shell脚本用来从命令行接受参数,或被函数用来保存传递给它的参数
      执行Shell脚本时,用户可以通过命令行向脚本传递信息,跟在脚本名后面的用空格隔开的每个字符串都称为位置参量。
      在脚本中使用这些参数时,需通过位置参量来引用
    		例如:
    			$1表示第一个参数,$2表示第二个参数
    			以此类推,直到$9以后需要用花括号把数字括起来,如第10个位置参量以${10}的方式来访问
    
    • 位置参量列表
      在这里插入图片描述
    • 示例:
      在这里插入图片描述
      在这里插入图片描述
    • 给位置参量传递参数
      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	
    
    • 示例
      在这里插入图片描述
       

    date命令
    在这里插入图片描述
    在这里插入图片描述

     
    cal命令

      查看系统当前月份日历表
      	$ cal
      	
      查看指定年份所有日历表
      	$ cal year
      	
      查看指定年月日历表
      	$ cal month year
    
    • 示例
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    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
    
  • 相关阅读:
    ios8 xcode6 下的启动界面设置和图标设置
    写一些有关android的东西吧,那时候玩android时候的一些笔记
    使用sqlite3 有关tableview删除cell的问题
    iOS 使用CLGeocoder获取地理位置
    ios 解决有关火星坐标的问题
    iOS 火星坐标相关整理及解决方案汇总(转)
    IOS开发UI篇之──自定义UIActionSheet
    python中新式类和经典类的区别
    python中几个常用的算术函数
    多线程
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772506.html
Copyright © 2011-2022 走看看