1、变量在引号中的不同。单引号与双引号的不同。

[root@USC_28_18 shell]# a=432

[root@USC_28_18 shell]# echo "$a"

432

[root@USC_28_18 shell]# echo '$a'

$a

变量赋值有方法有:直接赋值a=90;

let命令来赋值:let a=7+2

在一个for循环里面赋值;

read命令来赋值;

命令替换``

$()机制来赋值;

[root@USC_28_18 shell]# R=$(cat /etc/redhat-release)

[root@USC_28_18 shell]# arch=$(uname -m)

[root@USC_28_18 shell]# echo $R

Red Hat Linux release 9 (Shrike)

[root@USC_28_18 shell]# echo $arch

i686

2、命令行传递给脚本的参数是: $0, $1, $2, $3 . . .

$0是脚本的名字,$1是第一个参数,$2是第二个参数,$3是第三个,以此类推。[1] After $9, 在位置参数$9之后的参数必须用括号括起来,例如:${10}, ${11}, ${12}.

3、字符串的长度 三种方法。

${#string}

expr length $string

expr "$string" : '.*'

4、类似于let ,((...))结构允许算术计算和求值. 它最简单的形式a=$(( 5 + 3 )) 会把变量"a" 的值设置成"5 + 3"8.

在(())需我们还可以进行++--a?b:c等一系列类似于C的运算。

while (( a <= LIMIT ))   # 双圆括号, 变量前边没有"$".
do
       echo -n "$a "
       ((a += 1))   # let "a+=1"
# Yes, 看到了吧.
# 双圆括号允许像C风格的语法一样增加变量的值.
done

5break命令可以带一个参数.一个不带参数的break 环只能退出最内层的循环,break N可以退出N层循环

同样也有continue N

6rev命令:把一行中的内容反转。

bash$ cat file1.txt
 This is line 1.
 This is line 2.
 bash$ tac file1.txt
 This is line 2.
 This is line 1.
 bash$ rev file1.txt
 .1 enil si sihT
 .2 enil si sihT

7expr

通用求值表达式: 通过给定的操作(参数必须以空格分开)连接参数,并对参数求值.可以使算术操作, 比较操作, 字符串操作或者是逻辑操作.

y=`expr $y + 1`

增加变量的值, let y=y+1 y=$(($y+1)) 的效果相同. 这是使用 术表达式的一个例子.

8、date +%j
 # 显示今天是本年度的第几天(从1月1日开始计算).
9、sort INPUTFILE | uniq -c | sort -nr 命令 先对 INPUTFILE 排序, 然后统计 每行出现的次数, 最后的(-nr 选项将会产生一个数字的反转排序). 这种命令模版一般都用来分析 log 文件或者用来分析字典列表, 或者用在那些需要检查文本词汇结构的地方.
Unip将会删除一个已排序文件中的重复行。-c选项的意思是在输出行前面加上每行在输入文件中出现的次数。

10expand, unexpand

expand 将会把每个tab转化为一个空格.这个命令经常用在管道中.

unexpand 将会把每个空格转化为一个tab.效果与 expand 相反.