shell编程

shell编程

shell编程 对比 C编程 
shell编程: (1.执行过程,2.开发效率,3.执行效率,4.移植性)  
    解释型语言  
        边翻译边执行 (ls cp(程序))
        擅长文件处理,操作系统管理
        开发效率高  cp 1 2
        执行效率低    
        移植性好
.c:
    编译型语言
        先编译再执行   //gcc 编译 (.c ---> 机器代码) 
        擅长数据计算和数据处理
        开发效率低
        执行效率高
        移植性差

shell脚本编程

shell脚本编写     
    1.shell脚本编写流程:
        1.vim XX.sh  #!/bin/bash     //编辑文件 
        2.编写脚本
        3.chmod +x    XX.sh             //给执行权限 
        4. ./XX.sh                   //执行文件 
 

文件类型 所属用户权限  所属组  其他人       
        -            rw-                rw-        r--

//chmod   - ls    -l  权限位     
    chmod  +x 
    chmod   +777   1.sh  
    
    r w x - r w x  - r w x 
    1 1 1   1 1 1    1 1 1 
    -----   -----    -----
      7       7        7 
      

变量/分支语句/循环语句/

shell变量  
        1.环境变量: env
            PATH:保存当前工作的默认路径
            PWD :当前所在的工作路径
            HOME:当前登录用户的家目录
            ...
        HOME=/home/linux
        PWD=/home/linux/2021code/shell/test_code
        USER=linux
        SHELL=/bin/bash


        env 
        //引用环境变量:
        $PATH    

      

main(int argc,char* argv[])               // a.out 1  2
        
        @argc --- 命令行参数的个数
        @argv --- 命令行参数对应的数组的首地址 

自定义的变量:
        注意:
            (1).shell中数据是弱类型,默认识别为字符串类型         
            (2).不需要先定义
            (3).名字规则 ,遵循C的命名规则。 //(不要带空格)    
                不能带 $符号 
                [注]
                 给值的时候 等号两边不能有空格 
                 var=123 (√)
                 var = 123 (x) 
            
echo 等同于 printf功能
read --表示从键盘获取输入     

    

shell脚本输入输出
            read  name
            echo  '$name'

$表示取变量的值

shell中的引号
          "":打印字符串,遇到$变量($name)则打印变量中的值(name变量的值)
          '':打印字符串,遇到$变量依然打印 $变量 (原样输出)
          ` `:将中间的字符串按照命令打印   (命令置换)

read
     read从标准输入读入一行, 并赋值给后面的变量,其语法为:
      read  var
     把读入的数据全部赋给var
      read  var1  var2  var3
     把读入行中的第一个单词(word)赋给var1, 
     第二个单词赋给var2, 
     ……把其余所有的词赋给最后一个变量.
     如果执行read语句时标准输入无数据, 
     则程序在此停留等侯, 
     直到数据的到来或被终止运行。

//字符串不能进行运算,需要专门命令 expr 
运算:
expr             
expr 
算术运算命令expr主要用于进行简单的整数运算,
#注意:
     (1).符号两边要有空格
     (2).注意对应的运算符是否需要转义 

包括:
    加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。
    
    
    例如:

  $ expr  12  +  5  \*  3
  27
  $ expr  3  -  8  /  2
  -1

  $ num=9
  $ sum=`expr  $num  \*  6 `
  $ echo  $sum

  结果为54

分支语句:

//单分支 
    if [ $i -eq 10  -a $j -le 10 ]
    then

.........................
    fi

  
    //双分支 
        if 条件
        then
            语句1
        else
            语句2
        fi 

//多分支 
    if 条件表达式
    then
        语句 
    elif [条件表达式]  #else if (表达式)
    then 
        语句 
    elif [条件表达式]
    then
       语句 
    else 
       语句 
    fi

//条件的生成 -- test的命令      //注意: test 执行结果为真  0
                             // 执行结果为假 1
    man  test 
    -a   and   &&
    -o   or      ||
    
    test    -eq       相等   
    test 10 -eq $i    
            -ne        不相等
        
            -gt        大于
            -lt        小于
            -ge        大于等于
            -le     小于等于
            [ $i ge 0  -a $i lt 59 ]
            
  //命令的写法
  test 10 -eq $i

 //中括号 
  [ $i -eq 10 ]  //注意: 中括号里面,前后都要有空格。

test 
        -b            块设备文件        block      test -b /dev/usb0 --- 硬盘 
        -c            字符设备文件      char                         --- 鼠标,键盘 
        -d            目录文件          directory 
        -f             普通文件          regular 
        -L            链接文件          link       类似 windows下的快捷方式 
        -S             套接字文件        socket     (本地socket/网络socket )
        -p            管道文件          pipe       (管道) //进程的通信  

case 语句

//shell 
        case $num in 
            9)语句
                ;;  //C中的 --- break
            8|6|5|4)语句
                ;;  //C中的 break 
            7)语句
                ;;
            *)语句 //default 
                ;;
        esac  //esac --->case 反着写 

for循环

while语句

do  while

语法:((表达式1,表达式2…))

特点:
1、在双括号结构中,
所有表达式可以像c语言一样可以进行计算,
如:a++,b--等。
2、在双括号结构中,
所有变量可以不加入:“$”符号前缀。

如下所示:
-----------------------------------------------
#!/bin/bash

for name in "Tom" "Lily" "Kate"
do
    echo $name
done

for ((i=0;i<=5;i++))
do
    echo $i
done

    

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值