读文件一行的方法
cat file | while read line
do
$line
done
在上面这种方法中,假设在循环外部定义了变量,在循环内部改变它,除了循环,变量的值还是循环前的初始值。管道连接的两端是两个线程,所以在管道另一侧的数据改变,一般不会影响另一端的变量。
while read line
do
$line
done < file
将命令的输出内容重定向到文件
cat file1 > file2
如果文件file2不存在,创建,并写入结果。如果文件存在,则覆盖掉内容。
cat file3 >> file4
如果文件不存在, 那么就创建它, 如果存在, 那么就追加到文件后边。
a.out >> file6 2>&1
2代表标准错误输出stderr,1代表标准输出stdout。将标准输出的内容输出到file6,标准错误输出2的处理方式等同于标准输出1,也就是说将stdout和stderr的输出都重定向到file6。
判断一个字符串是否为空
-z str
判断str为空则值为真。
-n str
判断字符串非空则值为真。
if语句
if [ exp ] && [ exp ]; then
do something
else if []
do something
fi
大小写字母转换
typeset -u mystr
mystr="aa333a"
echo $mystr
mystr的中的小写字母变成了大写字母。如果是大写换小写可以用”-l”(字母L的小写)。
echo $mystr | tr 'a-z' 'A-Z'
判断两个字符串是否相等
if [ $str1 = $str2 ]
then
else
fi
需要注意是“=”既可以用来比较字符串也可以用来比较数值,而“-eq”只能比较数值。