Shell脚本编程笔记(1)

来源:互联网 发布:linux vi 跳到指定行 编辑:程序博客网 时间:2024/06/14 22:44

Shell脚本编程笔记

如何运行

  1. chmod +x使文件具有可执行权限, 直接运行
  2. 直接调用解释器, 将脚本文件作为参数传入 (比如bash hi.sh)
  3. 使用source(也可用.代替)执行文件

一般使用第一种,方式3执行的方式与前两种都不同:使用source执行shell脚本时, 不会创建子进程, 而是在父进程中直接执行。

变量

  1. Shell中的变量只有字符串这一种类型
  2. Shell中变量名与变量值没有长度限制
  3. Shell的变量也允许比较操作和整数操作, 只要变量中的字符串为数字

定义变量

variable_name=ghui

需要注意:=两边不能加空格, 当赋值语句包含空格时请加引号(单引号/双引号均可)比如:

variable_name="ghui's blog"

Shell中的变量可以分为两种类型:

  • 局部变量 (定义变量时在前面加local修饰符)
  • 全局变量 (定义变量时不加任何修饰符)

局部变量的可见范围是代码块或函数内,全局变量在全局范围内可见。

使用变量

name=ghuiecho $nameecho ${name} #{} 为了帮助解释器识别变量边界, 非必须

在使用变量时还有一个地方需要注意,即: 被双引号括起来的变量会发生变量替换, 单引号不会

#! /bin/shstr='abc'echo "1 print $str"echo '2 print $str'

输出:

1 print abc2 print $str

常用的字符串操作

name="shell"sayHi="hello, "$name" !"sayHi2="hello, ${name} !"echo $sayHi $sayHi2

输出

hello, shell! hello, shell!

获得字符串长度

string="abcd"echo ${#string} #输出:4

截取字符串

str="hello shell"echo ${str:2}  #输出: llo shellecho ${string:1:3} #输出:ell

if/else流程控制

#! /bin/sha=1if [ $1=$a ]then    echo "you input 1"elif [ $1=2 ]then    echo "you input 2"else    #do nothing    echo " you input $1"fi

这里有两个地方需要注意, 如果某个条件下的执行体为空, 则不能写这个条件。另外, [ ]两边一定要加空格。

switch流程控制

case expression in    pattern1)        do something... ;;    pattern2)        do something... ;;    pattern2)        do something... ;;    ...esac

注意:
1. ;;相当于其它语言中的break
2. 每个pattern之后记得加)
3. 最后记得加esac (即反的case)

for循环

for name [in list]do    ...done

其中,[]括起来的in list, 为可选部分, 如果省略in list则默认为in “$@”,即你执行此命令时传入的参数列表

while循环

while conditiondo    do something...done
#! /bin/shi=0while ((i<5))do    ((i++))    echo "i=$i"done

until循环

until conditiondo    do something...done
#!/bin/shi=5until ((i==0))      # 这里是i==0do    ((i--))    echo "i=$i"done

跳出循环

break,continue

函数

要定义一个函数, 可以使用下面两种形式:

function funcname()   |   funcname (){                     |   {    do something      |       do something}                     |   }                
  1. 函数必须先定义后使用
  2. 如果在函数中使用exit会退出脚本, 如果想退回到原本函数调用的地方, 则可使用return

向脚本传递参数

shell脚本传递参数, 非常简单, 只需要在你执行命令的后面跟上即可。

0 0
原创粉丝点击