shell编程

来源:互联网 发布:好吃的威化饼 知乎 编辑:程序博客网 时间:2024/06/04 18:29

读文件一行的方法

cat file | while read linedo     $linedone

在上面这种方法中,假设在循环外部定义了变量,在循环内部改变它,除了循环,变量的值还是循环前的初始值。管道连接的两端是两个线程,所以在管道另一侧的数据改变,一般不会影响另一端的变量。

while read linedo     $linedone < 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 somethingelse if []    do somethingfi

大小写字母转换

typeset -u mystrmystr="aa333a"echo $mystr

mystr的中的小写字母变成了大写字母。如果是大写换小写可以用”-l”(字母L的小写)。

echo $mystr | tr 'a-z' 'A-Z'

判断两个字符串是否相等

if [ $str1 = $str2 ]thenelsefi

需要注意是“=”既可以用来比较字符串也可以用来比较数值,而“-eq”只能比较数值。