shell 编程
shell 编程一、简介
二、基本语法
总结一下{}()常用。变量1=(${变量2//字符/空格})
三、shell脚本语法
分支语句if [ 条件 ] then 条件为真执行该语句 else 条件为假执行该语句 fi (if 冒号:在sh里表示恒久为真) if [ 条件1 ] then 条件一满足执行的语句 elif[ 条件2 ] then 条件2为真执行该语句 else 条件12均为假执行该语句 fi case/esaccase命令可类比C语言的switch/case语句,esac表示case语句块的结束。 case "$1" in start) ...变量$1等于start执语句行 ;; 相当于break stop) ...变量$1等于stop执语句行 ;; reload | force-reload) ...变量$1等于reload执语句行 ;; restart) ... *) log_success_msg "Usage: nfs-kernel-server {start|stop|status|reload|force-reload|restart}" exit 1 ;; esac 循环语句for/do/doneShell脚本的for循环结构和C语言很不一样,它类似于某些编程语言的foreach循环。例如: #! /bin/sh for FRUIT in apple banana pear; do echo "I like $FRUIT" done FRUIT是一个循环变量,第一次循环$FRUIT的取值是apple,第二次取值是banana,第三次取值是pear。再比如,要将当前目录下的chap0、chap1、chap2等文件名改为chap0~、chap1~、chap2~等(按惯例,末尾有~字符的文件名表示临时文件),这个命令可以这样写: $ for FILENAME in chap?; do mv $FILENAME $FILENAME~; done while/do/donewhile的用法和C语言类似。比如一个验证密码的脚本: #! /bin/sh echo "Enter password:" read TRY while [ "$TRY" != "secret" ]; do echo "Sorry,try again" read TRY done 函数和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表。例如: #! /bin/sh foo(){ echo "Function foo is called";} echo "-=start=-" foo echo "-=end=-" 注意函数体的左花括号‘{‘和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号‘}‘写在同一行,命令末尾必须有;号。 在定义foo()函数时并不执行函数体中的命令,就像定义变量一样,只是给foo这个名字一个定义,到后面调用foo函数的时候(注意Shell中的函数调用不写括号)才执行函数体中的命令。Shell脚本中的函数必须先定义后调用,一般把函数定义都写在脚本的前面,把函数调用和其它命令写在脚本的最后(类似C语言中的main函数,这才是整个脚本实际开始执行命令的地方)。 Shell函数没有参数列表并不表示不能传参数,事实上,函数就像是迷你脚本,调用函数时可以传任意个参数,在函数内同样是用$0、$1、$2等变量来提取参数,函数中的位置参数相当于函数的局部变量,改变这些变量并不会影响函数外面的$0、$1、$2等变量。函数中可以用return命令返回,如果return后面跟一个数字则表示函数的Exit Status。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- MySQL5.6一键编译安装脚本
- WSE3.0 用UserToken来进行身份验证
- angularjs – $rootScope.$factory在工厂中无法更改其他$sc
- 记事本像VIM中的“多重编辑”一样?
- unix – 如何更改挂载点的所有者
- angularjs提交application/x-www-form-urlencoded的数据
- angularjs – 在yeoman角度应用程序中使用bower时,我可以更
- angularjs – 获取Angular中表单元素的原始值
- 【状压DP水题】[USACO06NOV]玉米田Corn Fields
- Angularjs – Firefox无法在新标签中打开blob网址