shell最基础的笔记
2013-01-29 20:07
429 查看
注意:“=”左右两边都不能有空格,BASH中的语句结尾不需要分号 程序1 #!/bin/sh #echo something echo "hello world" echo "hello !!" cd /root/Desktop mkdir ./abc 程序2,变量不需要类型,也不需要定义,使用的时候加上$,赋值的时候不用 #!/bin/sh #set variable a a="hello world" #print a echo "A is:" echo $a 如果是在字符串中如何输出变量 num=2 echo "this is the ${num}nd" 会变成this is the 2nd 重要提示: $#传入脚本的命令行的参数个数 $*所有命令行的参数值(空格隔开) $#命令本身(shell文件名) $1第一个命令行参数 $n第n个命令行参数 程序3 s3中 #!/bin/sh echo "number of vars:" $# echo "values of vars" $* echo "value of var1" $1 echo "value of var2" $2 echo "value of var3" $3 echo "value of var4" $4 终端中运行并输入 ./s3 1 2 3 4 得到的输出是 number of vars:4 values of vars:1 2 3 4 value of var1: 1 value of var2: 2 value of var3: 3 value of var4: 4 局部变量 在变量首次被赋值的时候加上local关键字可以声明一个局部变量,例:s4 #!/bin/bash hello="var1" echo $hello function func1(){ local hello="var2" echo $hello } func1 echo $hello 运行 ./s4 得到 var1 var2 var3 !!!!如果去掉local,上面的程序将输出vr1,vr2,vr2 IF语句 格式: if [expression] then #code block fi 或者 if [expression] then #code block else #code block fi 或者多重if if [expression] then #code block else if [expression] then #code block else #code block fi fi fi#每个if对应一个fi 比较: 比较操作 整数操作 字符串操作 相同 -eq = 不同 -ne != 大于 -gt > 小于 -lt < 大于或等于 -ge 小于或等于 -le 为空 -z 不为空 -n eg: 注意“[“”]“符号的左右都留有空格,“=”左右都有空格 比较整数a和b是否相等 if [ $a = $b ] (也可以用-eq) 判断整数a是否大于整数b if [ $a -gt $b ] 比较字符串a和b是否相等 if [ $a = $b ] 判断字符串a是否为空 if [ -z $a ] 判断整数变量a是否大于b if [ $a -gt $b ] 判断: -e 文件已经存在 -f 文件是普通文件 -s 文件大小不为零 -d 文件是个目录 -r 文件或目录对当前用户可以读取 -w 文件或目录对当前用户可以写入 -x 文件或目录对当前用户可移植性 程序5 #!/bin/sh folder=/home [ -r "$folder" ] && echo "Can read $folder"(当前面的判断成立,执行&&后的) [ -f "$folder" ] || echo "this is not file"(判断为假执行||后的语句) 由于folder是个目录,可读,故不输出第一条语句 由于folder是个目录,不算文件,故输出第二条语句 For循环 格式: for var in [list] do #code block done 其中$var是个循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体,相当于C语言的大括号。另外如果do和for被写在同一行,必须在do前面加上“;”。 如:for $var in [list] ; do 程序s6 #!/bin/bash for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done 程序s8:如果列表被包含在一对双引号内,则被认为是一个元素,在这里只运行一次。 #!/bin/bash for day in "Sun Mon Tue Wed Thu Fri Sat" do echo $day done 注意:for所在的那一行变量名前面不加 $,因为这是赋值的过程 ,而在循环体里面,echo所在行的变量是必须加上$符号的。 while循环 while [ condition ] do #code block done until循环 until [ condition ] do #code block done while 和 until 的区别在于 while 是为真的时候执行,而until 是为假的时候执行。 case语句:bash 中的 case 结构和C语言的 switch 语句功能类似,可以进行多选项分支控制。 case "$var" in condition1 ) ;; condition2 ) ;; *) default statments;; esac 程序s7 #!/bin/bash echo "Hit a key,then hit return." read Keypress case "$Keypress" in [A - Z] ) echo "Uppercase Letter";; [a - z] ) echo "Lowercase Letter";; [0 - 9] ) echo "Digit";; *) echo"Punctuation,whitespace,or other";; esac 特殊: if [ -z $a ] || [ -z $b ]或者 exit 1错误退出,在if中可以省略fi read Keypress读入一行
相关文章推荐
- shell脚本基础--学习笔记
- shell基础笔记
- linux笔记:shell基础和bash的基本功能
- Linux学习笔记---shell脚本基础
- Linux学习笔记三 shell基础
- Linux基础之linux终端和shell命令(针对韩立刚老师的linux教学视频编写的笔记)
- 2015—01—23 Shell学习笔记基础(2)
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- Shell基础笔记<1:shell基础>
- [笔记]shell变量基础
- Linux实战教学笔记17:精简shell基础
- Linux学习笔记10 -----Shell基础
- 嵌入式开发之linux基础第七天学习笔记 shell脚本编程(二)
- Linux新手生存笔记[11]——shell脚本基础4-补充
- linux笔记:shell基础-bash基本功能
- Shell脚本基础笔记(1)
- [笔记]shell中函数使用基础
- 嵌入式开发之linux基础第六天学习笔记 shell脚本编程(一)
- shell基础二十篇 一些笔记
- Shell脚本笔记(一)一些零碎的基础知识