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)		       # 请注意,每个字符之间一定要有空格
    
  • 相关阅读:
    使用Xshell和Xftp部署简单的项目
    1-27 sed基本编程和cut基本应用
    1-26-1-expect无交互式-正则表达式
    1-24-case流程控制和while循环语句的使用
    1-23-shell脚本之-if流程控制语句和for循环语句的使用
    1-22-shell脚本基本应用-实验手册
    1-22-shell脚本的基础
    1-21 网络管理相关的命令
    总结 1-1 ~ 1-6
    windows系统下Eclipse启动界面更改
  • 原文地址:https://www.cnblogs.com/HsinTsao/p/15408327.html
Copyright © 2011-2022 走看看