shell编程入门

  • shell就是操作系统的外层。

  • Hello World:

    #!/bin/bash
    echo 'Hello World'
    

    !/bin/shell 这是shell的头,必须指定;

    编辑完成之后要赋予可执行的权限。chmod o+x XXX.sh

    然后执行./XXX.sh或者/bin/bash XXX.sh或者sh XXX.sh就可以运行这个文件了

  • 定义变量与引用变量

    #!/bin/bash
    #这是局部变量的定义
    B=wang
    A=123
    echo "$A-$B"
    

    SHELL创建的环境变量:

    $0--------当前程序名称

    $n--------当前程序的第n个参数,$0输出当前程序名称,$1输出后面的参数

    $*--------当前程序的所有参数(不包括程序本身)

    $#-------当前程序的参数个数(不包括程序本身)

    $?--------命令或程序执行完后的状态,一般返回0表示执行成功

    $UID---------当前用户ID,0代表root

    $PWD--------当前所在目录

$UID表示转义

echo "$UID IS $UID"

  • if条件判断

    #!/bin/bash
    NUM1 = 1
    NUM2 = 2
    if(($NUM1 > $num2));then
    	echo "123"
    else
    	echo "321"
    fi
    

    逻辑运算符:

    -f 判断文件是否存在。 eg: if [ -f filename]

    -d 判断目录是否存在。 eg:if [ -d dir]

    -a 相当于and

    -o 相当于or

    -z 空字符串

mkdir -p 递归创建目录

多条件判断

#!/bin/bash
A=1
B=2
if(($A > $B));then
	echo "123"
	exit
elif(($A == $B));then
	echo "321"
else
	echo "123"
fi
  • for循环

    for 变量 in 字符串

    do

    语句1

    done

    #!/bin/bash
    for i in `seq 1 15`
    do
    	echo "num is $i"
    done
    

    计算和

    #!/bin/bash
    j=0
    for ((i=1;i<=100;i++))
    do
    	j=`expir $i + $j`
    done
    echo $j
    

    查看脚本执行过程:sh -x XXX.sh | more

  • while循环

    while [[$i < 10]];do
    	echo $i;
    	((i++));
    done
    

    扩展:

    read -p "please input num: " input

    回车然后输入123

    echo $input

    这个时候就会输出123

    逐行读取一个文件(/etc/hosts)

    #!/bin/bash
    while read line
    do
    	echo $line
    done </etc/hosts
    
  • util循环语句

    util 条件

    do

    ​ action

    done

    直到满足条件才退出,否则一直执行action

  • case选择语句

    case $arg in

    ​ pattern1)

    ​ 语句1

    ​ ;;

    ​ pattern2)

    ​ 语句2

    ​ ;;

    *)

    语句3

    ;;

    esac

  • select选择语句

    select一般用于选择菜单的创建,可以配合PS3来做菜单的打印输出信息

    select i in "Centos" "redhat" "ubuntu" ;do echo "Select you use system:" $i ;done

    回车会打印

    1)Centos

    2)redhat

    3)ubuntu

    输入1回车会打印Select you use system:Centos

  • 定义数组

    A = {test1 test2 test3}

    echo ${A[0]},输出test1

    echo ${A[@]},输出所有参数

    echo ${#A[@]},显示数组个数

    echo ${A[@]/test2/test5},替换test2为test5

    unset A[2],移除test3

  • 函数

    function command{

    ​ 命令

    }

    如何调用函数:只要command即可

  • sed命令

    我们用vi来修改文件内容时,假设将文件内的12批量替换成51

    需要输入:%s/12/51/g

    我们用sed命令:

    sed ‘s/12/51/g’ xxx.txt

    此时如果不加任何参数,sed不会应用修改,只是缓存起来了。

    sed -i ‘s/12/51/g’ xxx.txt

    就会应用修改。

    在行首添加一个空格:

    sed 's/^/&需要在行首添加的字符/g' xxx.txt

原文地址:https://www.cnblogs.com/mwss/p/12500073.html