1.如果是使用read来接受数字的话,不必在程序的开头声明这个变量,如:
read age,这个age就可以不用再前面声明了。有一点需要注意一下:$fish. 这个取值就不正确了,它取的是"fish.",而不是"fish" ....
2.重定向">"使用时,如果原来存在那个文件,重定向后会把内容给覆盖掉
而">>"使用时,会把内容添加到文件的末尾,所以说>>用的多一些
还有一个"<",是从一个文件中获得信息,一般很少使用。。。
3.在进行运算的时候"="两边没有空格,而"+"运算符两边必须要空格,也就是说运算符两边都要求有空格
4.双引号和单引号,实际上基本上一样,不够唯一的区别是""使用的时候,有三个符号不能忽略1.美元符号,2反斜杠,3反引号,也就是说如
果引号内部使用了这3个字符的话,需要转义一下,而单引号''忽略所有
2种引号基本上都是把引号内的字符为普通字符使用,所以说没有必要的时候不要使用
进行运算符操作的时候,一定要加上"",这样的话,才不会出错。。。如:let counter2="$counter2 + 1"
5.关于 反引号号 和$在命令替换的时候的区别,一般也没区别,相比而言:反引号不易发现,常会当成单引号,所以说更多的使用$来进行替
换
6.比较运算符:1.对于数字的比较。-eq:等于 -ne:不等于 -gt:大于 -ge:大于或等于 -lt:小于 -le:小于或等于 ,这里还要介绍一种关于平
常我们经常用到的> < >= <=,如果你在比较数字的时候还想用这些运算符,就不能用上面的[],得用(()),具体可以参照:
7.用test来进行2个数的比较,用$?来输出test的比较真值:1或者0,如:echo "$?"
8.用if条件表达式的时候if后边不是(),而是[],且if和第一个"["要有一个空格,最好"["和里面的变量之间也加上空格(虽然加不加都不会出
错);还有一点需要注意:if中的判断语句如果需要使用&&的时候,格式如下:if [condition] && [condition] ,不需要两边加中括号
介绍一下if语法:
1.if....then....fi 2.if....then...else....fi(其中else应和then相对应,这种if...else也可以嵌套,但是有更好的做法,就是3的方法
) 3.if....then...elif....then...fi(注,对应关系和2一样,要记住,这个书写格式和c也不一样):是第二种的扩展用法,可以一直嵌套
4.if....then...elif....then...elif...fi:这个和第三个就差了一个在最后fi前没有那个then,这样保证if elif至少可以执行一条语句,类
似于c中switch中的那个defalut。呵呵。。。。
9.case语法 case $variables in
1)
echo " "
;;
2)
echo " "
;;
*) //这个是默认情况
echo " "
esac
10.while循环的格式:while [ Condition ] //注:凡是遇到[]的,前后一定要加上空格,这是格式
do
instruction
done
11.for in循环:for variableName in wordlist //注worldlist是一个列表
do
instruction
done
12.shell中的break和c中的有很大不同。。。。虽然意义相同,可使用法不同shell中break使程序直接跳出循环(主要区别是c中有switch()
shell中没有,也就导致了break在c中的switch中使跳出switch而在shell中的case语句中测试跳出上一级的while循环),二continu和break的
用法差不多。。。
13.函数:function name{command},在使用函数的时候,需要先定义函数,然后再它后面就可以调用了,如果不调用的话,shell是不会执行
函数内部的代码的。。。
在函数传递中有时会用到一个变量:$#,意义是传递给函数的参数的个数
同样,可以用export来输出函数,格式:export 函数名
最后再添加点:
1.let 一个变量的时候 等号两边不能有空格
.对普通变量赋值可以直接使用let(貌似有时候还可以省略)来操作,但是如果对字符串变量赋值的话,必须加上 declare 或者export,并且字
符串要加上双引号,如:
declare Myname="my name is feige"
对一个字符变量声明之后如
declare myname="xiaofei"
再次对myname操作的时候,可以使用$myname也可以使用"$myname"
如:
declare secondname=$myname和declare secondname="$myname"是等价的。。。
2.局部变量的声明:
declare和let
全局变量的声明:
export
阅读(827) | 评论(0) | 转发(0) |