1.计算的数值的五种方法: |
((i++)) |
let i++ |
i=$(expr $i + 1) |
i=$(echo $i+1|bc) |
i=$(echo $i 1|awk ‘{printf $1+$2}‘) |
2.time命令用来统计命令的执行时间,这部分时间包括总的运行时间,用户空间 |
执行时间,内核空间执行时间,它通过ptrace系统调用实现。 |
3.取模使用符号%,而求幂只有bc使用的符号为^,其他命令使用的符号均为**。 |
4.bc程序是Linux下的计算器,可以用来计算进制转换。例如: |
echo "obase:10;ibase8;11" | bc |
另一种处理进制转换的方法是: |
echo $((8#20)) |
表示八进制的20,表示的十进制的值是多少。 |
5.浮点计算有两种方式: |
* 使用bc计算: |
echo "scale=3;1/13" | bc |
如果不加scale的话,需要使用下面的格式: |
echo "1/13" | bc -l |
* 使用awk计算: |
echo "1 3" | awk ‘{printf("%0.3f",$1+$2)}‘ |
6.$#表示传给脚本的参数个数,不包括当前可执行文件的在内,例如: |
./test.sh 1 # $#的值为1。 |
$?表示上一条命令的返回值。 |
7.环境变量RANDOM产生0到32767之间的随机数,awk的rand函数产生0到1之间的随机数。 |
在使用awk的rand函数的时候,需要首先用srand函数埋下种子,例如: |
echo "" | awk ‘{srand();printf("%f",rand());}‘ |
8.seq可以产生一系列数,这些数可以按照指定的间隔递增。例如: |
seq 5 # 产生1到5五个数字 |
seq 1 2 6 # 产生数列 1 3 5 |
seq -s : 1 5 # 产生数列 1:2:3:4:5 |
seq -w 1 100 # 产生数列 001 002 ... 100 |
seq -f "0x%g" 1 3 # 产生数列 0x1 0x2 0x3 |
9.sed的使用方法 |
* cat regular_express.txt | sed ‘s/[^a-zA-Z]/\n/g‘ | \ |
sed ‘/^$/d‘ | sort | uniq -c | sort -k 1 -n -r | head |
上面的这条命令用于统计文本中出现次数最多的前十个单词, |
sed ‘s/[^a-zA-Z]/\n/g‘ 用来分割单词,sed ‘/^$/d‘用来去除空行, |
sort 将分割好的单词排序,使得相同的单词排列在一起,这样就可以 |
使用 uniq -c 来进行统计每个单词出现的次数了,最后将统计好的单 |
词按照出现的次数排序,head 只提取出现在前十个的单词。 |
* cat index.html | sed -e ‘s/[^A-Za-z]/\n/g‘ | sed ‘/^$/d‘ | \ |
grep ‘^the$‘ | uniq -c | sed ‘s/[^0-9]//g‘ |
查找 the 出现的次数 |
10.shift 每次都将命令行参数向左移动一个,因此当前要处理的参数总为$1 |
参考资料
===============
Shell编程范例 -- by falcon
时间: 2024-10-13 22:52:32