zoukankan      html  css  js  c++  java
  • Shell 编程 基础用法

    Shell 编程

    更改shell脚本权限

    chmod u+x shell.sh
    

    标准头部写法

    #! /bin/bash
    #! /bin/dash
    

    变量使用

    a=10
    print $a
    

    读取命令行参数

    $#	# 传递给脚本的参数个数
    $@	# 传递给脚本所有的参数
    $0  # 当前脚本的名字
    $1  # 传递给脚本的第一个参数(后面依次类推)
    

    PS: ./test.sh COMP | head 此处读入的外界参数只有COMP,管道后面的并不会被当作参数

    if的4种模式

    • 1
      if(($# != 2)) 2>/dev/null	  # 2>/dev/null意为输出错误不再显示到屏幕上,而是到null里
      then				  
      	echo "$#"
      else				  # else后不用加then
      	echo "Hello"
      fi
      
    • 2
      if [ $# -ne 2 ]		          # [ ]功能等同于test,使用-eq这些,而不是==
      then			          # [ ]中每个字符之间都要有空格
      	echo "$#"
      fi
      
    • 3 dash不支持
      if [[ $# < 5 && $# > 2 ]]         # [[ ]]非常强大,可以使用逻辑表达式,也可以使用=~正则表达式
      then                              # dash 不支持
      	echo "$#"
      fi
      
    • 4 判断文件是否存在
      if test -e $file	         # test测试后会返回一个值真或假,可测试数字、字符文件 
      then	
               echo "Exist"            # -e,-r为检测文件是否存在
      fi
      

    test详解

    =, !=                 # 字符串匹配 (perl里字符串比较使用eq)
    -gt,-eq,-ne,-lt       # 数字大小判断(perl 里使用==与!=)
    -e,-r		      # 判断文件存在,判断文件存在且可读
    -a                    # and  例:if test $a -gt 10 -a -lt 15
    -o
    

    3种for循环

    • 1
      for((i=1;i<=10;i++))  # 注意此处是双括号 
      do
      	echo "Hi"
      done
      
    • 2
      for i in $(seq 1 10) 
      do
      	echo $i
      done
      
    • 3 dash写法
    while [ $index -gt 0 ]
    do
        filename="hello$index.txt"
        echo "hello $name" > $filename
        # $i = $(expr $i - 1)
        index=$((index-1))
        # echo +++$index
    done
    

    依次读取目录下的文件

    for file in *.jpg             # 读取当前目录下所有的.jpg文件
    do
        #操作变量的时候要加$,类似Vue的语法
        #此处转换.jpg为.png,注意此处的echo,它有打开此文件的作用,若无可能无法将值赋给变量png
        png=$(echo "$file" | sed 's/jpg/png/g')	
    done
    
    for file in *		      # 读取当前目录所有文件
    do
        print $file
    done
    

    echo的用法

    echo的一个作用是读取文件名(并不打开文件)并通过管道传递

    echo -n                            # 不换行输出
    echo "hello world" >> a.txt	   # 追加至a.txt中
    echo "hello world" > a.txt	   # 写入a.txt中
    

    赋值命令行结果给变量

    test=$()
    test=``
    

    加减运算

    num=$(($1 + 1))    		       # 使用双括号进行运算赋值,$()这种无法进行计算会报错
    num=$(expr $1 + 1)		       # 请注意,每个字符之间一定要有空格
    
  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/HsinTsao/p/15408327.html
Copyright © 2011-2022 走看看