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
5、break命令可以带一个参数.一个不带参数的break循 环只能退出最内层的循环,而break N可以退出N层循环
同样也有continue N
6、rev命令:把一行中的内容反转。
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
7、expr
通用求值表达式: 通过给定的操作(参数必须以空格分开)连接参数,并对参数求值.可以使算术操作, 比较操作, 字符串操作或者是逻辑操作.
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选项的意思是在输出行前面加上每行在输入文件中出现的次数。
10、expand, unexpand
expand 将会把每个tab转化为一个空格.这个命令经常用在管道中.
unexpand 将会把每个空格转化为一个tab.效果与 expand 相反.