Linux(十)shell脚本

xiaoxiao2021-07-05  334

 http://wiki.jikexueyuan.com/project/shell-tutorial/            极客学院shell教程

一、shell定义:

Shell本身是一个用 C 语言编写的程序,它是用户使用 Unix/Linux 的桥梁,用户的大部分工作都是通过 Shell 完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

用户直接面对的不是计算机硬件而是shell。用户将指令告诉shell,然后shell传输给系统内核。接着内核支配计算机硬件。

我们在Linux中输入命令的界面就成为shell。

二、shell脚本知识

2.1、开头#!/bin/sh

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。

$ cat /etc/shells可以查看系统支持的shell格式

其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。

比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。

#!/bin/bash同理。

2.1变量

2.1.1普通变量(关闭shell后或切换shell后失效)

abc=123 //定义变量 echo $abc //读取变量 unset abc //取消变量

2.1.2环境变量:系统预定义的参数

临时的:export 变量名=值。

              变量在关闭shell时失效。切换shell也生效。(sh      :切换shell   exit:退出)

             su 用户;切换用户,但是shell还是之前那个shell,临时环境变量还存在

             su -用户:真正意义的切换用户,切换了用户的shell。临时环境变量就不存在了。

2.1.3位置变量

三、运算符

文件测试运算符:

检测 Unix 文件的各种属性。

字符串运算符:

布尔运算符:

关系运算符:

只支持数字,不支持字符串,除非字符串的值是数字。常见的有:

算数运算符:

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr. 下面使用expr进行;  expr是一款表达式计算工具,使用它可以完成表达式的求值操作;

比如:

a=10 b=20 expr $a + $b expr $a - $b expr $a \* $b expr $a / $b expr $a % $b a=$b

注意: 1. 在expr中的乖号为:\*

2. 在 expr中的 表达式与运算符之间要有空格,否则错误;

3. 在[ $a == $b ]与[ $a != $b ]中,要需要在方括号与变量以及变量与运算符之间也需要有括号, 否则为错误的。(亲测过)

四、shell脚本语法

4.1case语法

#! /bin/bash echo "please input a number (1-4)" read num echo "your input number is $num" case "$num" in 1) echo "one" ;; 2) echo "two" ;; 3|4) echo "three or four" ;; *) echo please input 1 -4 ;; //每个case语句都以;;结尾 esac //以esac结尾

4.2、if语法

#! /bin/bash echo "please input a director judge if is" read a echo "director is $a" if [ ! -d /usr/aaaaaaaaaaaaaaa ];then //路径也可以直接用$a mkdir -p /usr/aaaaaaaaaaaaaaaa elif [条件2];then 执行语句。。。 else 执行语句。。。 fi #1 /bin/bash read -p "请输入你的成绩:" a if [ $a -ge 90 ] && [ $a -le 100 ];then echo "您成绩很棒棒哦" elif [ $a -ge 70 ] && [ $a -le 89 ];then echo "你成绩一般般鸭" else echo "你个垃圾" fi

4.3、for循环(两种)

#! /bin/bash for ((i=0;i<10;i++)) do sum=$((sum+i)) echo $sum done #!/bin/bash for a in {1,1,1,1,1,11,} do echo $a done

4.4 while和util循环

COUNTER=0 while [ "$COUNTER" -lt 5 ] //while为条件为true时执行。util反之 do COUNTER=$((COUNTER+1)) echo $COUNTER done

 

转载请注明原文地址: https://www.6miu.com/read-4821401.html

最新回复(0)