基本SHELL语句总结【20150709】

原创 2015年07月09日 13:22:33

1、SHELL语句的I/O


a.echo

echo [string]

使用echo 可以返回语句,参数等的组合到屏幕上。

使用类似

echo *.sh 

的语句可以返回搜索值,以此对文件进行批量操作。

另外,echo还可以重定向到文件中,详见重定向


b.重定向


在SHELL中可以使用>,>>,<将输入输出重定向,以此达到从文件中输出,或输出到文件中的目的

e.g.

echo $filename > filelist.txt

可以将filename写入文件中

需要注意的是输出重定向有> 与>>,其中

>为覆盖式输出,每次输出会将原文件删除并创建新的空白文件进行输出

>> 为附加式输出,每次输出在末尾进行


使用<则可以从文件中取输入到语句中

c.管道

使用管道 | 可以将一个语句的结果作为输入输出到下一个结果

program1|program2

e.g.who | grep user1

返回搜到的user1的信息

grep 后可跟正则表达式作为搜索条件,详见后


2、搜索与查询

a.grep 与正则表达式

grep [options] pattern-spc [files]

e.g.grep dbi* test.txt

返回test.txt中dbixxxxx的字段

常用的正则表达式符号

* 匹配任意(数量)的字符

\ 转义符,当搜索目标中含有特殊符号时可以用

. 匹配单个字符

^ 匹配后面紧接的正则表达式,在某行的起始(^expression 类似 expression*)

$ 匹配其前面的正则表达式,在某行的末尾(expression$ 类似 *expression)

[] 匹配[]中的任意字符

使用[a-z][A-Z][0-9]可以表示序列,另还有shell 内置的字符集如[:lower:][:upper:]等

b. awk的简单搜索

awk 'program' [file]

其中program 一般为

pattern {action}

默认分隔符为空格

使用-F 可以指定分隔符

e.g. awk -F : '{print $1}' 

指定分隔符为 : 并打印第一个

awk –F = '/^db_user_ods/{print $2}'

//用于括起搜索的正则表达式,搜索到相应行后打印第二个

而{print $0} 则将匹配到的整行进行输出

3、文本替换

使用sed

sed 'editing command' file

e.g.对当前目录下的所有 SJ_O开头的进行查找,将SJ_删除将其名称输出到cw_dis_table.list中记录 

echo SJ_O_* '\n' |sed 's;SJ_;;g'>>../cw_dis_table.list

  其中‘’中为编辑命令,此处s指定;为分隔符号,SJ_为匹配的查找项,其后的;后应该为替换项,此处为空即可删除,最后的;以将语句结束。g为选项,指对所有搜索到的项进行全局处理。


4、字符串处理

a.tr

tr [options] source-char-list replace-char-list

将source-char-list中的字符替换为replace-char-list中的字符,对每个字符进行操作,字符替换按顺序

由于没有输入的部分,需要配合<或|使用

e.g.大小写转换

UPPERCASE=$(echo $VARIABLE | tr '[a-z]' '[A-Z]') #注意集合间的空格
LOWERCASE=$(echo $VARIABLE | tr '[A-Z]' '[a-z]')

b.join

进行表链接

join file1 file2

类似SQL中的内链,需要file1 与file2有字段相同,另需要两者先进行排序

       c. sort [options] file

返回排序后的值


5.杂项·文件操作

a.“位桶” /dev/null

重定向到此处可以舍弃不需要的输出

b.跟踪脚本执行过程

使用 sh -x filename.sh

则会返回filename.sh 执行过程,调用语句将以+开头

c.head与tail

head -n n file

tail -n n file

返回文件开头/结尾的n行

d.wc 对文件情况进行统计

将返回行数,字数与大小(字节数)

可用于检查文件是否正确输出

6.脚本控制


--判断语句

a.if语句

if  [condition];

then ....

[elif [condition]

then ....]

....

[else ....]

fi

在SHELL中的逻辑符号如下:

NOT !

AND &&

OR ||


在SHELL中[ ]中括起的条件等价于 test ....

  将返回真伪值

  if test $str1=$str2

等价于

if [$str1=$str2]

另外,常用的选项有

-d 是否存在目录

-e 是否存在

-f 是否存在一般文件

-eq 等价于=

-a 等价于&&

-o 等价于 ||

b.case 语句

多项选择,形式如下

case $1 in 

xx)

....

;;

yy)

....

;;

zz)

...

esac

其中xx,yy,zz为与$1对应的选项


--循环语句


for 循环

for word in file

do

...

done

while循环

while condition

do

...

done

until循环

until condition

do

..

done


以及,可以使用

break 跳出循环

continue 跳过本轮,进入下次循环


7.子命令

使用<<eof ...eof执行子命令

e.g.

sql_str=`sqlplus-S $USER/$PASSWORD@$INS<<eof

set pagesize 0 feedback off verify off  heading off

@$Sql_File $TXT_File $OK_File $Run_Date$SCHEMA;

exit

eof`

其中``返回其内部执行语句的值并执行



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Shell中的循环语句总结(for, while, until)

在编程语言中,循环语句是最基本的语法之一,在Shell(这里是Bash)中也不例外,再把以前自己写过的相关内容整理一下吧。 这里包括for/while/until循环,以及变量自增的语法实例。 ...

基本select 语句总结

  • 2012-09-26 16:17
  • 57KB
  • 下载

SHELL基本语法使用总结

前言         由于新项目马上开始,需要使用SHELL,结果一年前作的SHELL的东西,全部忘干净了,为了杜绝此类事情再次发生,特来此地把即将使用的SHELL的关键语法点加以总结,以备后用。 ...

精典C/C++编程总结——第二章 表达式和基本语句

嗯嗯!大家好,今晚咱们又面了,呵呵!上次和大家分享一下C/C++编程的开头,写的不好,让大家笑话了。今天我本来是打算写一下程序的版式(排版)的,可是想到我们都还是刚刚学习C/C++排版的问题还是以后再...

SQL 基本语句总结

  • 2011-08-17 16:27
  • 414KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)