shell脚本学习笔记(语法)
来源:互联网 发布:零基础学qt4编程pdf 编辑:程序博客网 时间:2024/06/07 20:54
shell脚本中的基本语法包括判断,条件,循环,函数,位置参数和特殊变量等等,下面我们就一一介绍吧
1.判断:test 语句 和 [
test语句和[ 都可以用于判断一条语句的真假,不过shell和c语言有区别,一定要切记在shell中:真返回0,假返回1
举个例子吧:
#!/bin/bashval=10 test $val -gt 9echo $?test $val -gt 10echo $?[ $val -gt 9 ] echo $?[ $val -gt 10 ]echo $?
还有一些测试命令是比较常用的:
[ -d DIR ] : 如果DIR存在并且是一个目录则为真[ -f FILE ] : 如果FILE存在且是一个通文件则为真[ -z STRING ] : 如果STRING的长度为零则为真[ -n STRING ] : 如果STRING的长度非零则为真[ STRING1 = STRING2 ] : 如果两个字符串相同则为真[ STRING1 != STRING2 ] : 如果字符串不相同则为真我测试代码如下:
#!/bin/bash[ -d script.sh ] #是否是目录echo $?[ -f script.sh ] #普通文件echo $?STRING="" [ -z STRING ] #string的长度为0则真echo $?[ -n STRING ] #stirng长度非0则真echo $?STRING1="haha"STRING2="hehe"[ STRING1 = STRING2 ] #两字符串长度是否相等echo $?[ STRING1 != STRING2 ] #两字符串长度不等返回真echo $?[ ! -d script ] #非echo $?[ -n STRING -a -z STRING ] #与echo $? [ -n STRING -o -z STRING ] #或echo $?
2.条件:if/then/elif/else/fi语句,这是shell里面的if语句,废话不多说,请看代码:
#!/bin/bashif [ -d script.sh ];then echo "is dir"elif [ -f script.sh ] then echo "is file"fiif : ;then echo "/ is always true"fiecho "please input your id:"read idecho "please input your password"read passwordif [ ${id} -eq 1 ];then if [ ${password} -eq 2 ];then echo "you are right" else echo "error" fi else echo "try again"fi
需要注意if语句的格式,如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了,另外,
then后面有换行,但这条命令没写完,Shell会自动续行,把下一行接在then后面当作一条命令处理。和[命令一样,
要注意命令和各参数之间必须用空格隔开。:是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。
case/esac语句,和C语言的switch语句类似,其语法如下:
#!/bin/bashread val case $val in a) echo "it is a" ;; b) echo "it is b" ;; esac
其中read命令的作用是等待用户输入一行字符串,将该字符串存到一个Shell变量中
3.循环语句
循环语句常见的有for,while等等
#!/bin/bashfor i in {a..z}do echo "printf val is: $i"donefor ((i=0;i<10;i++))do echo "print val is:$i"done
4.位置参数和特殊变量:
#!/bin/bashecho "$0 is done"echo "$1 is done"bash $1 &echo "$#"echo "$@"echo "$$"echo "$!"echo "$?"for val in $@do echo "$val"done
5.函数
shell中也有函数,和C语言中是有区别的:
(1).函数定义中没有返回值也没有参数列表
(2).注意函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括
号}写在同一行,命令末尾必须有;号
(3).Shell脚本中的变量不必先定义后使用但是函数必须先定义后调用
(4).Shell函数中可以有参数,调用函数时可以传任意个参数,在函数内同样是用$0、$1、$2等变
量来提取参数
#!/bin/bashfun(){ bash $1 echo "$2" echo "haha i'am called"}fun test.sh 100
以上是基本的语法了,最后我还要说的就是shell脚本的调试
Shell提供了一些用于调试脚本的选项,如下所示:
-n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
-v 和 -x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来
使用这些选项有三种方法,
一是在命令行提供参数
$ sh -x ./script.sh
二是在脚本开头提供参数
#! /bin/sh -x
第三种方法是在脚本中用set命令启用或禁用参数
set -x和set +x分别表示启用和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。
#!/bin/bash -xfun(){ bash $1 echo "$2" echo "haha i'am called"}fun test.sh 100
好了,完了,如果大家有什么见解的话可以留言,但是我这里将到的还只是shell语法的冰山一角,
希望想深入研究的人可以多搜集资料或者阅读相应书籍来达到目标,最后,祝大家编程快乐。
- shell脚本学习笔记(语法)
- Shell脚本学习笔记-语法
- 学习笔记之一shell脚本语法
- Shell脚本学习---语法篇(一)
- Shell脚本学习-语法篇(上)
- Shell脚本学习-语法篇(下)
- shell学习笔记(二):shell 语法
- shell脚本学习之语法
- SHELL脚本,学习笔记
- shell脚本学习笔记
- shell 脚本学习笔记
- shell脚本学习笔记
- shell脚本学习笔记
- shell脚本学习笔记
- Shell脚本学习笔记
- shell 脚本学习笔记
- shell脚本学习笔记
- Shell脚本学习笔记
- 详解android:scaleType属性
- python中隐式的内存共享
- 安装1.7.1版本PCL开源库
- Struts2源码分析(一)绘制Tomcat启动时时序图并分析
- maven 常用仓库地址
- shell脚本学习笔记(语法)
- 国内外智能电网发展分析
- 持续交付目录
- Redis的高级应用
- 题目1436:Repair the Wall
- 数据结构与算法学习记录
- hdu_4417_Super Mario_TLE
- android shape的使用
- 51say weekend keyword scholl district house