码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习笔记

时间:2015-12-11 01:25:42      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

一、shell变量

1、变量名与赋值符号间不能有空格。

2、首个字符必须为字母a~z或A~Z。

3、使用一个已定义的变量,在变量名前加‘$‘,如:

myName=“firefly”

echo $myname

echo ${myName}

加花括号帮助识别变量的边界,建议加上s。

4、删除变量:unset varName,不能删除只读变量。

5、三种变量:局部变量、环境变量、shell变量

 

二、shell替换

1、变量替换

echo -e "hello, Emma!\n"

若无-e,则不转义而直接输出

2、3、略

 

三、条件语句

if-else语句

(1)if...then...fi

if [ expression ]

then

   Statement(s) to be executed if expression is true

fi

(2)if...else...fi

if [ expression ]

then

   Statement(s) to be executed if expression is true

else

   Statement(s) to be executed if expression is not true

fi

(3)if...elif...fi

if [ expression 1 ]

then

   Statement(s) to be executed if expression 1 is true

elif [ expression 2 ]

then

   Statement(s) to be executed if expression 2 is true

elif [ expression 3 ]

then

   Statement(s) to be executed if expression 3 is true

else

   Statement(s) to be executed if no expression is true

fi

注:

(1)expression与方括号[]间有空格

(2)条件语句中可以使用符号>,>=,==,<,<=,!=或者-gt, -gq, -eq, -lt, -lq, -nq判断大小关系

case..seac语句

1、同其他语言switch-case语句,为多分支选择结构;

2、case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

case 值 in        #in为关键字

模式1)

    command1

    ...

    commandn

    ;;

模式n)

    command1

    ...

    commandn

    ;;

*)

    command1

    ...

    commandn

    ;;

esac

(1)每一模式都必须以右括号结束,取值可以为变量或常数;

(2)匹配发现取值符合某模式后执行该模式的命令直至‘;;‘结束,‘;;‘类比break语句;

(3)若无匹配模式,用‘*‘捕获该值,再执行后面的语句。

 

四、shell注释:只能单行注释,前面加‘#‘

如果大段代码需要注释或者取消注释,可以把要注释部分用花括号括起来,定义成函数,未被调用则不执行达到注释的效果。 

 

五、字符串:单引号、双引号、无引号

单引号字符串的限制:

  1.     - 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  2.     - 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号的优点:

  1.     - 双引号里可以有变量
  2.     - 双引号里可以出现转义字符 

 

六、shell数组

1、定义数组,shell中括号表示数组,数组元素用空格符号分开

arrName=(1 2 3)或者

arrName=(1

2

3)或者

arrName[0]=0

arrName[1]=1

arrName[2]=2

2、读取数组,格式${arrName[index]}

value=${arrName[2]}

注:使用符号‘@‘或‘*‘读取数组中所有元素

eg:    ${arrName[*]}    、 ${arrName[@]}

3、获取数组的长度

获取数组的长度方法同字符串

获取数组元素个数:length=${#varName[*]}

获取数组单个元素的长度:lengthn=${#varName[2]} 

 

七、shell echo命令

你类比C语言中的printf,C++中的cout

shell中也有printf,稍有不同

这里仅说明与C语言printf()函数的不同:

  • printf 命令不用加括号
  • format-string 可以没有引号,但最好加上,单引号双引号均可。
  • 参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。
  • arguments 使用空格分隔,不用逗号。

eg:

  1. $ printf"%d %s\n"1"abc"
  2. 1 abc

 

八、shell循环语句

1、for循环

格式:

for 变量 in 列表

do

    command1

    ...

    commandn

done

(1)列表是一组值(数值、字符串)组成的序列,每个值通过空格分隔。

(2)每循环一次,将列表中的下一个值赋值给变量。

(3)in列表是可选的,若不用则使用其位置参数。

for var in 1 3 5 7

 #!/bin/sh          

 for var in 1 3 5  9                                                                                                                                 

do                 

      echo ${var}    

done 

2、while循环

格式:

while command

do

   Statement(s) to be executed if command is true

done

3、unitl循环

格式

until command

do

   Statement(s) to be executed until command is true

done

退出循环:break、continue

注:

(1)嵌套循环中,break n表示退出第n层循环,从内层开始计数。

(2)continue退出当前循环。

 

九、shell函数

  1. 删除函数:$unset .f function_name
  2. 当n>10时需要${n}获取参数;n<10时可以直接$n;

 

十、输入输出重定向 

(1)>(或<)输出(或输入)重定向会覆盖原内容;

(2)>>(或<<)输出(或输入)重定向不会覆盖原内容。

 

十一、shell文件包含

shell可以包含外部脚本,将外部脚本的内容合并到当前脚本。

格式:

(1). filename(注意空格)

(2)source filename

注:被包含脚本不需要执行权限。


推荐学习资料:

(1)Linux shell脚本教程

(2)Bash Reference Manual

(3)Bash Guide for Beginners

(4)Advanced Bash-Scripting

 

shell学习笔记

标签:

原文地址:http://www.cnblogs.com/corykang/p/5037769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!