[标签:内容2][标签:链接]    1. Linux 脚本编写基础

1.1 语法基本介绍

1.1.1 开头 #!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。要使脚本可执行:chmod x filename 这样才能用./filename 来运行。也可以将存放脚本的目录加到路径 newtext.file

  awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F, '{print $1 , $3 }'这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下:Adam Bor, 34, IndiaKerry Miller, 22, USA,命令输出结果为:Adam Bor, IndiaKerry Miller, USA

2) 概念: 管道, 重定向和 backtick

  管道 (|) 将一个命令的输出作为另外一个命令的输入

grep hello file.txt | wc -l

  在file.txt中搜索包含有”hello”的行并计算其行数。  

  重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。

   写入文件并覆盖旧文件

   加到文件的尾部,保留旧文件内容。

`反短斜线,将一个命令的输出作为另外一个命令的一个命令行参数。

如:echo `ls`打印出当前目录下的文件及文件夹

3) 流程控制

1.if

   if 表达式 如果条件为真则执行then后面的部分:

if ....; then

  ....

elif ....; then

  ....

else

  ....

fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等,通常用[ ]来表示条件测试。[ 后和 ]前都要有空格。

[ -f somefile ] :判断是否是一个文件

[ -x /bin/ls ] :判断/bin/ls是否存在并有可执行权限

[ -n $var ] :判断$var变量是否有值

[ $a = $b ] :判断$a和$b是否相等

   执行man test可以查看所有测试表达式可以比较和判断的类型。

快捷操作符:[ -f /root/me ] echo yes 条件为真则执行

[ -f /root/me ] || echo no条件不为真则执行

2.case

case :表达式可以用来匹配一个给定的字符串,而不是数字。

case ... in

...) do something here ;;

esac

例子:case $1 in

-h)

   echo hide the help info;;

-d)

   echo display the help info;;

esac

3. selsect

select 表达式是一种bash的扩展应用,长用于交互式使用。用户可以从一组不同的值中进行选择。

select var in ... ; do

  break

done

.... now $var can be used ....

例子:#!/bin/sh

echo which kernel version is your linux os use?
 阅读全文>>