shell脚本

Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言

<1> shell脚本--> 命令行解析器
    是一个文件,命令的有序集合
    脚本文件以“.sh”结尾
-----------------------------------------------------------------------------------------
<2> 运行一个shell脚本文件:第一种:使用系统的bash
        bash shell.sh


                       第二种:给shell脚本文件赋予可执行的权限
                               ./shell.sh
-----------------------------------------------------------------------------------------
<3> 脚本语言都是弱类型:
              shell变量没有类型
 
                       C语言是编译型语言,shell是解释型语言。
-----------------------------------------------------------------------------------------
<4> shell脚本变量命名规则:
      1. 见名知义


      2. 由字母、下划线、数字组成


      3. ----不能以数字开头------
-----------------------------------------------------------------------------------------
<5> 变量赋值:
C语言:
                       int var = 5;
 
                shell:
                           var=5;
                       注意:在变量赋值的时候等号两边不能有空格
-----------------------------------------------------------------------------------------
<6> 变量的引用(输出):
                使用echo:
echo $var
注意:在变量的输出时要加($)符号
-----------------------------------------------------------------------------------------
<7> 内置环境变量:
 PATH    HOME   USER   HOSTTYPE
-----------------------------------------------------------------------------------------
<8> 内置位置变量:
 1.$0 : shell脚本文件名
 2.$1-$9 : 命令行传入的参数,从脚本文件名后一个参数开始
   3.$* : 命令行传入的所有参数,除了脚本文件名
 4.$@ : 命令行传入的所有参数,除了脚本文件名
 5.$$ : shell脚本的进程号
-----------------------------------------------------------------------------------------
<9> shell脚本控制语句:
  
 1.输入 : read
执行脚本的时候从终端获取一个值赋值给read的变量。
read var
echo $var
 
read var1 var2
第一个参数给var1,后面所有的参数都给var2。

 2.算术运算 : 
进行算术运算: expr
expr 1 + 2
注意:expr、数字和运算符之间都要加空格。

进行算术运算: let
let var=1+2
注意:变量、数字和运算符之间都不要加空格。

                   


                   3. test与[ ] :
  使用[ ]的时候特别要主要中括号的前后都需要有空格。
查看帮助文档:
man test


        (1) 字符串:-n:测试字符串的长度不为0(nonzero)
 -z:测试字符串的长度为0(zero)
  =:测试两个字符串相等(equal)
 !=:测试两个字符串不相等(not equal)


     (2)整数:-eq:测试两个整数相等(equal)
-gt:测试一个整数大于另外一个整数(greater than)
-ge:测试一个整数大于或等于另外一个整数(greater than or equal)
-le:测试一个整数小于或等于另外一个整数(less than or equal)
-lt:测试一个整数小于另外一个整数(less than)
-ne:测试一个整数不等于另外一个整数(not equal)

     (3)表达式:-a:两个表达式为真最终结果为真       (and)
  -o:有一个表达式为真整个表达式为真   (or)


  !:表达式为假


     (4)文件: -e:测试文件是否存在(exists)
 -d:测试存在并且是否为一个目录(directory)
 -f:测试存在并且是否是一个普通文件(regular)
 -w:测试文件是否可写(write)
 -r:测试文件是否可读(read)
 -x:测试文件是否可执行(execute)
 
 [ -f file ]  :测试文件存在并且是一个普通文件
 ! [ -f file ] :测试文件不存在
 [ ! -f file ]
-----------------------------------------------------------------------------------------
<10> 控制语句:
   1. if 语句:
  C语言形式:
for(expr1;expr2;expr3){
 Code;
}
 
shell:
for 变量名 in list(列表,单词表)
do
   CMD
done

运行原理:
根据单词表中的值的个数来决定循环的次数。
即把单词表(list)中的值分别按顺序的给变量进行赋值,一直到最后一个值为止。
单词表的构建:
1.直接列举
2.通过命令行获取($*/$@)
3.通过命令置换(`ls`)
4.通过子shell($())
 
for 变量名
do
    CMD
done
这种形式的单词表在命令行
-------------------------------------------------------------------------
2. case 语句:
C语言形式:
switch(const_expr){
    case const_expr1:
        C;
        break;
 
    case const_expr2:
          C;
        break;
    default:
      C;
          break;
}


shell:
case 变量的引用  in
        模式1)
        CMD
        ;;
          模式2)
          CMD
          ;;
          *)
          CMD 
          ;;
  esac  
-------------------------------------------------------------------------
3. for 语句:
C语言形式:
for(expr1;expr2;expr3){
    Code;
}
 
shell:
for 变量名 in list(列表,单词表)
do
    CMD
done
运行原理:
根据单词表中的值的个数来决定循环的次数。
即把单词表(list)中的值分别按顺序的给变量进行赋值,一直到最后一个值为止。
单词表的构建:
1.直接列举
2.通过命令行获取($*/$@)
3.通过命令置换(`ls`)
4.通过子shell($())
 
for 变量名
do
    CMD
done
这种形式的单词表在命令行
-------------------------------------------------------------------------
4.while语句 :
C:
while(expr){
    Code;
}


shell:
while [ expr ]
do
    CMD
done
-----------------------------------------------------------------------------------------
<11>  函数:
C语言形式:
void test(){
    Code;
}
调用:
test();
 
shell:
第一种:
function test(){
    CMD
}
 
第二种:
test(){
    CMD
}
调用
第一种:
直接函数的名字
test_1
test_2 
 
第二种:
命令置换
`test_1`
`test_1` 
 
注意:
1.函数不能返回字符串
2.shell中的变量都是全局变量,如果希望这个变量是局部的加限定词:local

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值