1. for循环
list="1 2 3"
for var in $list; do
...
done
使用seq命令产生序列
for var in $(seq 1 $cnt); do
...
done
2. 函数
函数定义
foo()
{
$* 所有参数
$1 $2 ... 具体参数
对全局变量进行操作
返回值只能是整数
}
函数调用
foo 1 2 3
$?记录了函数返回值
3. 字符串操作
${var}
${var#pattern} 从头部开始,最小匹配pattern,删除。
${var##pattern} 从头部开始,最大匹配pattern,删除。
${var%pattern} 从尾部开始,最小匹配pattern,删除。
${var%%pattern} 从尾部开始,最大匹配pattern,删除。
pattern:
* 表示任何字符
. 表示.
4. 格式化显示
echo -e "\t" 选项-e可以显示转义符"\t"
echo -e "string\c" "\c"表示不换行
printf fmt $var1 $var2 格式化显示
"%30s" 宽度30的字符串,右对齐
"%-30s" 宽度30的字符串,左对齐
5. awk
cat file | awk '{printf fmt, $1, $2, ...}' 取得想要的列
sort根据第一列排序,根据字符大小来排序
sort -n 将字符转为数字来排序