Linux基础——Shell内建函数

Posted 生信大讲堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础——Shell内建函数相关的知识,希望对你有一定的参考价值。

(上接)


10.continue_循环控制

停止循环中接下来的命令,开始下一轮循环。-n 表示跳出循环层数

[wudy@node2 test]$ cat contin_1.sh #! /bin/bash # cintinue examplefor I in A B C D Edo    echo -n "$I:"    for J in $(seq 1 10)        do            if [ $J -eq 5 ]; then                continue                #continue 2            fi            echo -n " $J"        done    echo done echo [wudy@node2 test]$ . ./contin_1.sh A: 1 2 3 4 6 7 8 9 10B: 1 2 3 4 6 7 8 9 10C: 1 2 3 4 6 7 8 9 10D: 1 2 3 4 6 7 8 9 10E: 1 2 3 4 6 7 8 9 10[wudy@node2 test]$ cat contin_1.sh #! /bin/bash # cintinue examplefor I in A B C D Edo    echo -n "$I:"    for J in $(seq 1 10)        do            if [ $J -eq 5 ]; then                #continue                continue 2            fi            echo -n " $J"        done    echo done echo [wudy@node2 test]$ sh contin_1.sh A: 1 2 3 4B: 1 2 3 4C: 1 2 3 4D: 1 2 3 4E: 1 2 3 4

(可左右滑动)


11. eval_将所跟参数作为shell输入,并执行产生的命令

将字符串解析成命令执行

[wudy@node2 test]$ cmd="echo 'Hello World'"[wudy@node2 test]$ echo cmd cmd [wudy@node2 test]$ echo $cmd echo 'Hello World'[wudy@node2 test]$ eval cmd -bash: cmd: command not found [wudy@node2 test]$ eval $cmd Hello World


12. export_设置环境变量,使变量被子shell识别

变量默认情况下是私有的,或者叫做“局部变量”。使用export将变量导出,该Shell的子Shell都可以直接调用该变量,这个过程称为变量输出。

[wudy@node2 test]$ cat export.sh #! /bin/bash echo $var[wudy@node2 test]$ var=100[wudy@node2 test]$ echo $var100[wudy@node2 test]$ sh export.sh [wudy@node2 test]$ bash export.sh [wudy@node2 test]$ . ./export.sh 100[wudy@node2 test]$ source export.sh 100[wudy@node2 test]$ unset var[wudy@node2 test]$ cat export.sh #! /bin/bashvar=100echo $var[wudy@node2 test]$ echo $var[wudy@node2 test]$ sh export.sh 100[wudy@node2 test]$ echo $var[wudy@node2 test]$ source export.sh 100[wudy@node2 test]$ echo $var100

(可左右滑动)


13. read_标准输入读取到变量

[wudy@node2 test]$ cat read.sh #! /bin/bash declare N echo "12 bottles of beer in a box"echo -n "How many boxes in total: "read N echo "$((N*12)) bottles in total!"[wudy@node2 test]$ sh read.sh 12 bottles of beer in a box How many boxes in total: 12  #输入144 bottles in total! [wudy@node2 test]$ echo $N     #sh运行下N作为局部变量,父Shell的N为空值 [wudy@node2 test]$ source read.sh 12 bottles of beer in a box How many boxes in total: 12144 bottles in total! [wudy@node2 test]$ echo $N12   #source运行下N可以被父Shell获取

其中:

echo -n "How many boxes in total: "read N 与 read -p "How many boxes in total: " N 等同(read -p)


14. return_定义函数返回值

[wudy@node2 test]$ cat return.sh #! /bin/bashfunction fun_1 {    return 1 } fun_1 echo $?   # 之前函数返回值 [wudy@node2 test]$ sh return.sh 1


15. shift_向左移动位置参数

运行脚本命令后接受参数,从左到右第一个参数记为$1,第二个为$2……,第n为$N。所有参数记作$@或$*,参数总个数$#,脚本本身记作$0。

[wudy@node2 test]$ cat shfit.sh #! /bin/bash echo "script name:  $0"echo "1st parameter: $1"echo "2nd parameter: $2"echo "3rd parameter: $3"echo "parameters number: $#"echo "all parametres: $@"[wudy@node2 test]$ sh shfit.sh QQ WW EE script name:  shfit.sh1st parameter: QQ2nd parameter: WW3rd parameter: EE parameters number: 3all parametres: QQ WW EE

对脚本参数做“偏移”操作:依次取出参数

(可左右滑动)

[wudy@node2 test]$ sh shift_1.sh QQ WW EE RR QQ WW EE RR WW EE RR EE RR RR [wudy@node2 test]$ cat shift_1.sh #! /bin/bash until [ -z "$1" ]do    echo "$@ "    shift done [wudy@node2 test]$ sh shift_1.sh QQ WW EE RR QQ WW EE RR WW EE RR EE RR RR



参考:



《Linux系统命令与Shell脚本实践指南》,王军,机械工业出版社


以上是关于Linux基础——Shell内建函数的主要内容,如果未能解决你的问题,请参考以下文章

逆向及Bof基础实践

20155307刘浩《网络对抗》逆向及Bof基础

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

Linux运维基础:Linux基础命令