美文网首页
Shell编程

Shell编程

作者: 信命不认命_962f | 来源:发表于2019-02-17 19:47 被阅读0次

    一.Shell

    作用:把Linux中的命令保存起来,下次需要时直接运行Shell程序

    ①cd    Desktop/

    ②mkdir  shellText/

    ③cd    shellText/

    ④touch    hello.sh

    ⑤vim    hello.sh

    sh    hello.sh运行文件程序

    在hello,sh文件内进行shell编程

    1.定义变量(不能有空格)

    name='zhangsan'

    echo  ${name}——>"zhangsan"

    num=10

    echo  ${num}——>"10"

    echo   "your  name  is ${name}"    ---->"your  name  is  zhangsan"

    myname = 'abc'

      ###重新赋值

    readonly  myname

    myname=’dce‘——>'dce'

    ###删除变量(unset)

    在shell编程中如果一个变量被删除,再次使用不会报错但是没有输出

    2.字符串

    双引号:内不能包含“$,`,\等字符”("  ")

    单引号:任意字符都不会被解析,都会原样输出('  ')

    反引号:会将内容当做命令来执行(`  `)


    3.数组(默认获取数组中的第0个元素)

    arr1=(10  20  30  40)

    echo  ${arr1}——>10

    arr2=(

    10

    20

    30

    40

    )

    echo  ${arr2}——>10

    #获取数组中的元素

    echo ${arr1[2]}——>30

    echo ${arr1[@]}——>10  20  30  40

    #获取数组的长度

    echo ${#arr1[@]}——>4

    echo ${#arr1[*]}——>4

    4.运算符

    算术运算符

    ①val=`expr  2 + 2`

    echo  ${val}——>4

    ②val=`expr  2\*2`

    echo  ${val}——>4

    ③val=`expr  2 / 2`

    echo  ${val}——>1

    ④val=`expr  2  %  2`

    echo  ${val}——>0

    关系运算符
    a=10

    b=20

    if [  $a -eq $b  ]       -eq相当于Python中的==(中括号前后加空格)

    then

      echo "a等于b"

    else

      echo "a不等于b"

    fi    (后面要加fi为结束语句)

    #逻辑运算符

    if [ 1 -lt 3 -a 2 -lt 3 ]     -lt相当于小于号,-a相当于python中的and

    then

      echo "ok"

    fi

    if [ 1 -lt 3 ] && [ 2 -lt 3 ]

    then

      echo "ok~~~"

    fi

    5.检测

    #!/bin/bash

    #算术运算符检测

    val=`expr 2 + 2`

    echo ${val}

    val=`expr 2 \* 2`

    echo ${val}

    val=`expr 2 / 2`

    echo ${val}

    val=`expr 2 % 2`

    echo ${val}

    #关系运算符检测

    a=10

    b=20

    if [ $a -eq $b ]

    then

      echo "a等于b"

    else

      echo "a不等于b"

    fi

    #逻辑运算符检测

    if [ 1 -lt 3 -a 2 -lt 3 ]

    then

      echo "ok"

    fi

    if [ 1 -lt 3 ] && [ 2 -lt 3 ]

    then

      echo "ok~~~"

    fi

    六.打印语句

    ①echo

    echo -e "ok,\c"    ——>ok

    (-e表示开启转义,-c表示不换行,/n表示换行)

    echo "test~~~~"    ——>test~~~

    echo `date`       ——>当前时间

    echo `cal`      ——>日历

    ②printf

    printf "%-10s %-8s %-4s\n" 姓名 性别 体重————————》      姓名               性别       体重

    printf "%-10s %-8s %-4s\n" zhangsan nan 66.0543    ————》   zhangsan       nan    66.0543

    printf "%-10s %-8s %-4.3s\n" lisi nv 50.634343———————》    lisi                 nv   50.

    printf "%-10s %-8s %-4.2s\n" jack nan 75.0434———————》   jack               nan     75.

    10s/8s/4s分别代表占位符,占位符越大中间间距越大

    第三行的4.3和第四行的4.2分别表示(整体!)保留三位和两位

    七.Shell语句

    a=10

    b=20

    if [ $a -eq $b ]

    then

      echo "="

    elif [ $a -gt $b ]

    then

      echo "》"

    else

      echo "<"

    fi

    case语句判断

    echo "请输入一个数字"

    read num

    case $num in

      1) echo "你选择了1"

      ;; #打印数组中的所有元素个数

      2) echo "你选择了2"

      ;;

      *) echo ""

      ;;

    esac

    #循环语句

    ①for num in 1 2 3 4

    do

      echo $num

    done

    ②for s in "hello"

    do

      echo $s

    done

    ③arr=(34 54 54 54)

    for x in ${a[*]}

    do

      echo $x

    done

    ④while语句

    n1=0

    sum1=0

    while [$n1  -lt    5]               -lt代表小于号

    do 

         sum1=$[sum+$n1]

         n1=$[$n1+1]或者(let  "n++")

    ⑤#until(相当于js中的do    while)

    i=0

    until    [  $i  -lt  5]

    do

    echo  $i

    ((i++))

    done

    八  函数

    ①无参无返回值

    demo(){

    echo "hello" #打印数组中的所有元素个数

    }

    demo

    ②有返回值函数

    add()

    {

    echo    "请输入第一个数"      

    read    num         #read表示从控制台输入

    echo  "请输入第二个数"

    read    otherNum

    return     $(($ #打印数组中的所有元素个数num+$otherNum))

    }

    add

    echo     "得到的结果为位$?"

    ③有参数函数

    arg()

    {

    echo    $1           #接参数

    echo    $2

    echo    $#          #打印长度

    echo    $*           #打印数组中的所有元素个数

    return  23

    }

    arg    10    20

    echo    $?

    相关文章

      网友评论

          本文标题:Shell编程

          本文链接:https://www.haomeiwen.com/subject/khqcqqtx.html