【Linux】Shell总结

来源:互联网 发布:第六届社交网络 编辑:程序博客网 时间:2024/06/03 19:45

1.Shell的类型:

Shell是脚本语言,常见的有bash,sh,csh与ksh。bash是最常见的,是linux系统默认的shell。脚本语言相当于每一次执行都要编译,然后再运行,效率低但是功能强大,需要较少的代码就可以实现较复杂的功能。全部变量

2.变量:

定义变量不需要申明,直接赋值即可。需要注意的是赋值号左右两边不能有空格。必须紧挨着,比如“a=10”。在使用变量时必须加美刀符,如果要指定变量名的范围,可以加上{},这种通常出现在字符串操作中,用于指定哪些是变量名。

shell脚本中有一些特殊的变量。“$0”:当前脚本的名字。 "$n":第n个变量。 "$#":变量数目。 "$*"与"$@":全部变量。"$$":进程号。

#!/bin/basha="Shell program:"echo "File name:${0}"echo "First Para:${1}"echo "Para Num:${#}"echo "Pid:${$}"


3.转义:

如果要在echo语句中使用转义符,如“\n”,必须在echo中加入-e选项。

echo -e "Hello \n world"echo "Hello \n world"

4.运算符:

算数运算,bash本身不支持算术运算,但是可以借助expr工具,不过expr也只是支持整形的运算。expr以及运算的表达式必须放在``之间,并且运算符与前后的两个操作数必须用空格相分离。乘法操作需要转义符。

#!/bin/basha=10b=3c=`expr $a \* $b`echo $c
比较运算符,就是等于,不等,以及大于等于,大于这类的,形式是“-”加上英语缩写。这6个符号只能用在数字比较上,不能用于字符串。对于数字而言,也可以使用==和!=来比较等于。对于字符串相等的比较是=和!=,这点需要分清。

带英文的6个用于数字,数字还可以用==与!=。

字符串只能用=与!=。

还有文件判断符,比如-e是否存在,-d是否为目录等。

5.字符串:

字符串与数字是shell中最常用的数据类型。

提取子串

a="abc"b=${a:1:2}
长度

echo "${#a}"
6.数组:

定义有两种方法,类似php,一种是直接定义,元素再小括号内部,元素与元素之间用空格分割。另一种是一个一个定义。使用数组需要用美刀符号,并且加大括号,内部的中括号放索引,如果放*,表示全部元素。计数用#。

a[0]=1a[2]=2b=(1 2 3 4 5)echo ${b[*]}echo ${a[0]}echo ${a[*]}echo ${#a[*]}
7.if:

共有三种。

if[] then sts fi

if[] then sts else sts fi

if[] then sts elif[] then sts else sts fi

注意,[]必须与前后的语句空格,包括[与],以及内部和外部。

#!/bin/basha=8if [ $a -lt 8 ]then echo "da"elif [ $a -eq 8 ]then echo "deng"elseecho "xiao"fi

8:for循环

有两种,一种是定义次数的,但是需要注意是两个小括号。另一种是for i in xx。这种可以用于文件操作。命令放在$()内部,表示获得命令执行的结果。

for file in $(ls)doecho $filedonefor ((i = 0; i < 10; i++))doecho ${i}donefor i in 1 2 3 4 5doecho $idone
9.函数定义:

shell中函数的定义只需要函数名加小括号即可。不需要指明参数列表,调用时直接写函数名字即可。如果有参数就在函数名后面加参数。

对于返回值,有两种,一种是用echo,那么函数中所有的echo都是标准输出,会被当做命令的输出,这里函数就相当于一个命令,执行时用``包围。就可以得到所有echo的输出。同时也可以用return返回,这个返回值只用来表示函数执行的状态,或者结果,失败或者成功。只能返回一个整数值。

#!/bin/bashf(){echo "glgl"echo "haha"if [ $1 -gt 10 ]then return 100else return 1fi}a=`f 9`echo $?echo $a
10.重定向:

linux中有三个特殊的文件描述符。

0:标准输入

1:标准输出

2:错误输出

默认情况下,正常的输出在1,错误的在2。有时我们为了保存,可能会重定向到文件中。

>:输出重定向,覆盖

>>:追加

>$1:重定向到标准输出。如果没有1,那么1会被当做一个名字为1的文件。
格式为:命令 重定向1 重定向2.。。。。。。




原创粉丝点击