shell编程入门

Posted X1aoHei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于shell编程入门的主要内容,如果未能解决你的问题,请参考以下文章

Shell 脚本是用户使用Linux的桥梁-快速入门

shell从入门到精通(-1)初次会面运行第一个shell脚本

Atom编辑器入门到精通 Atom使用进阶

shell从入门到精通(32)优秀的shell编程习惯和规范

shell从入门到精通(32)优秀的shell编程习惯和规范

Shell 编程入门