Shell函数操作总结

作者: thorhill | 来源:发表于2018-02-06 14:50 被阅读54次

    Shell函数操作

    echo

    #! /bin/bash

    echo "Hello World !"

    如何运行shell文件

    终端输入 

    `sh 脚本的文件名.sh`

    变量

     定义变量

    注意:等号两边不能有空格,否则会识别成指令

    variable="some value"

    让变量只读

    readonly variable

    删除变量

    unset variable_name

    使用变量(前面需要加美元符号)

    echo $variable

    echo $(variable)

    脚本参数

    传递参数: 

    在终端输入 

    `sh 脚本的文件名.sh 参数1 参数2 参数3`

    获取第0个参数

    param1=$0

    获取参数个数

    args_count=$#

    获取所有参数 "参数1 参数2 参数3"表示

    args=$*

    获取所有参数 "参数1" "参数2" "参数3"表示

    args2=$@

    显示当前进程ID

    pid=$$

    后台运行的最后一个ID号

    last_pid=$!

    显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

    exit_state=$?

    if

    注意必须以`fi`结尾

    if

    if condition

    then

        command

    fi

    if - else

    if condition

    then

        command

    else

        command

    fi

    if - elif - else

    if condition1

    then

        command1

    elif condition2

    then

        command2

    else

        commandN

    fi

     for

    for var in item1 item2 ... itemN

    do

        command

    done

    写成一行

    for var in item1 item2 ... itemN; do command;done;

    while

    while condition

    do

        command

    done

    until

    与`while`相反 

    until condition

    do

        command

    done

    case

    必须以`esac`结尾每个分支有两个分号,`*)`表示不匹配的分支

    case $aNum in

        1)  echo '你选择了 1'

        ;;

        2)  echo '你选择了 2'

        ;;

        3)  echo '你选择了 3'

        ;;

        4)  echo '你选择了 4'

        ;;

        *)  echo '你没有输入 1 到 4 之间的数字'

        ;;

    esac

    shell支持break和continue

    函数

    funWithReturn(){

        read aNum

        read anotherNum

        return $(($aNum+$anotherNum))

    }

    函数获取参数的方法与脚本获取参数方法一致

    引入其他脚本

    使用`.`符号引入其他sh脚本

    . ./test1.sh

    或者使用source

    source ./test1.sh

    字符串

    字符串插值

    echo "${variable}"

    字符串长度

    length=${#variable}

    子串

    echo ${string:1:4}

    字符串拼接

    variable ="hello, "$your_name" !"

    echo $greeting $variable

    字符串可以使用单引号

    单引号的字符串无法插值,并且无法用转义字符

    数组

    定义数组

    array_name=(value0 value1 value2 value3)

    数组赋值

    array_name[0]=value0

    数组长度

    length=${#array_name[0]}

    获取数组所有元素

    echo "${my_array[*]}"

    echo "${my_array[@]}"

    关系运算符

    算数运算符

    - `+`,`-`,`*`,`/`,`%`,`=`,`==`,`!=`

    关系运算符

    `-eq` 相等?

    `-ne` 不等?

    `-gt` 大于?

    `-lt` 小于?

    `-ge` 大于等于?

    `-le` 小于等于?

    布尔运算符

     `!` 非

    `-o` 或

     `-a` 与

    逻辑运算符

    `&&` 逻辑与

    `||` 逻辑或

    字符串运算符

     `=` 相等?

     `!=` 不等?

     `-z $str` 长度为0?

    `-n $str` 长度不为0?

    `$str` 为空?

    文件测试运算符

    `-d $file` 目录?

    `-f $file` 普通文件?

    `-r $file` 可读?

     `-w $file` 可写?

    `-x $file` 可执行?

     `-s $file` 0字节?

    `-e $file` 是否存在

    Shell重定向

     `command > file` 将输出重定向到file

    `command < file` 将输入重定向到file

     `command >> file` 将输出追加到file

    `n > file` 将文件描述符为 n 的文件重定向到 file

    `n >> file` 将文件描述符为 n 的文件以追加的方式重定向到 file

    `n >& file` 将输出文件 m 和 n 合并

    `n <& file` 将输入文件 m 和 n 合并

    `<< tag` 将开始标记 tag 和结束标记 tag 之间的内容作为输入

    更多命令参考 

    Linux命令大全

    相关文章

      网友评论

      • thorhill:谢谢大家的支持,有什么问题可以留言交流。

      本文标题:Shell函数操作总结

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