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内建函数的主要内容,如果未能解决你的问题,请参考以下文章