Linux dirname $0 source if

$SHELL gives the full path to your default shell.

$0 gives the name of your current shell.

 

dirname是一个命令,获取指定文件的路径

dirname voctrals/test.sh 的结果是voctrals。

 

现在就可以解释cd `dirname $0`了。

进入所运行的shell的目录,这样一来就可以查看目录下的其它文件了,如source。

 

source用于引入一个shell文件,类似于java的import或者ruby的require

他有一个等效的写法就是一个点,"."。

 

basename,他的功能是输出当前shell的名称。。。

 

bash中方法定义函数的格式

outinfo () {
  D=$(date '+%F %T')
  echo "<$D>[INFO]${1}"
}

调用方法时: outinfo "something for out";

 

if,如果if行里面有then的话,then前面需要有分号";"分割。

不然可以把then换到第二行

if methodcall parameter; then
  if body
fi

 

if条件判断参照: Other Comparison Operators

 

单引号:hard quotes,凡在hard quote中的所有meta均被关闭。

双引号:soft quotes,在soft quote中的大部分meta都会被关闭,但某些保留(如$)。

反斜线:\,只有紧接在escape(跳脱字符)之后的单一meta才被关闭。

 

AWK : 绝壁不是什么缩写,而是Alfred Aho、Peter Weinberger、Brian Kernighan三位作者的首字母

awk:逐行分析传递过来的文本,以默认的空格或者制表格为分隔符

awk中有一个默认的变量NF,是传递过来的文本中有多少个字符(以默认字符进行分割)

管道方式

#打印文本信息
echo first second third | awk '{print $0}'
#打印第二个字符串
echo first second third | awk '{print $2}'
#输出文本中字符串的个数
echo first second third | awk '{print NF}'
#打印最后一个字符串
echo first second third | awk '{print $NF}'

文件方式

#打印main.sh中每行的第二个元素
awk '{print $2}' main.sh

指定分隔符

#指定冒号:为分隔符,需要紧跟着-F
awk -F: '{print $1}' voctrals/main.sh
#另外一种方式
awk 'BEGIN{FS = ":"} {print $1}' /etc/passwd

运用正则表达式作为分隔符

#以one,冒号,空格作为分隔符
echo  'woonea|aoaoaoaonebboneb:iooneii:' |awk -F'one|:| ' '{print NF}'

awk内置变量

      ARGC  命令行参数个数
FILENAME  当前输入文档的名称
         FNR  当前输入文档的当前记录编号,尤其当有多个输入文档时有用
          NR  输入流的当前记录编号
          NF  当前记录的字段个数
          FS  字段分隔符
        OFS  输出字段分隔符,默认为空格
        ORS  输出记录分隔符,默认为换行符\n
          RS  输入记录分隔符,默认为换行符\n

awk能够同时处理两个文件,这就是FNR和NR的区别

文件a.txt有两行,b.txt有三行,那么以下输出结果为:

awk 'print FNR,NR' a.txt b.txt
1 1
2 2
1 3
2 4
3 5

 

posted @ 2014-10-22 17:35  VoctrALs  阅读(548)  评论(0编辑  收藏  举报