linux基础知识:shell编程

shell的建立和执行

shell文档的建立直接使用vim就可以了,不过运行有多种方式。假设我们建的shell程序叫 test。

  1. bash <test
  2. bash test 参数....
  3. chmod a+x test; PATH=$PATH:.; test。

  alias为字段增加别名,unalias取消别名。alias ll='ls -l';

shell特殊字符

  • *(星号):匹配任意字符的0次或者多次。f*--> f、fa、fl;.*file--->.peofile.......
  • ?(问号):匹配任意一个字符
  • [字符组]:匹配该字符组所限定的任何一个字符。如f[abcde]/f[a-e]可以匹配 fa,fb,fc,fd。不能匹配其他的
  • !(惊叹号):如果他紧跟在一对方括号的左方括号,表示匹配的不能是里面的东西。           

模式表达式

  • *(星模式),匹配报刊0次或者多次出现的模式,每个模式用‘|’分割开。如 file*(.c|.o)---->file,file.o,file.c,file.o.c等等,但不会出现file.h之类的东西。
  • +(加模式):和第一个差不多,但是他是至少出现1次。
  • ?(问号模式):和第一个的区别就是,只出现0次或者1次。
  • @(模式表):和第一个的区别,就是只出现1次。
  • !(模式表):除了模式的东西,可以匹配任何表。

引号

  • 单引号:使用单引号括起来的都是普通字符
  • 双引号:使用双引号括起来的字符(除了$,倒引号~,反斜杠\外均作为普通字符对待)。$表示变量替换;倒引号表示命令替换;反斜杠\后面的只能是:$、`、"、\之中的一个。
  • 倒引号`:将倒引号括起来的字符串被shell解释为命令行。倒引号可以嵌套,内层的倒引号需要用\转义。

输入输出重定向符

  • 输入重定向<:把命令的标准输入重新定向到指定的文件。$bash< ext2;
  • 输出重定向>:把命令的标准输出到指定文件。 $who>abc.
  • 输出附加重定向>>:表示输出到指定文件的末尾。$ps -l >>abcd。
  • 及时文件定向符<<: $mail <<!!fsdffsfsfsf!!。

命令执行操作符

  • 逻辑与:逻辑与是&&将两个命令联系在一起。命令1&&命令2:如果命令1执行成功,则执行命令2,如果命令1执行不成功,则不执行命令2.
  • 逻辑或:逻辑或是||将两个命令联系在一起。先执行命令1,如果执行不成功,则执行命令2。否则命令1执行成功,就不执行命令2.

成组命令

  • {}形式;被{}括起来的全部命令,看做语法上的一条命令,出现在管道的一边。注意:{}格式:左括号{ 后面应该有一个空格;右括号}之前应该有一个分号(;);例如 :  {    echo "report of user for `date`"       echo echo "this is `who|wc -l` user loggin in."  who|sort;}|pr
  • ()形式:和{}的=形式上的不同就是,在(后不需要空格;在)前不需要分号(;);但是他们两个之间还有重要的区别。{}的成组命令只是在本shell内执行命令表,不会产生新的进程;用()括起来的成组命令是在新的子shell内执行,需要建立新的子进程。

 输入输出命令

输入命令:read。

  输入格式:read name;

  参数问题:①:参数和字符串个数相同,由左到右一一赋值;②参数少于字符串个数,由左到右一一赋值,最后一个参数接受全部字符串;③参数个数大于字符串个数;由左到右一一赋值,没有赋值的参数用空值表示。

输入命令echo:如上列子所示。

参数置换变量

 操作符是::-;:=;:+;:?四种。                    

:-示例:                                                                                                                                        

 

:=示例                                                                                          

 

:+示例

 

:?示例

  • :-   :表示,给定变量有值,那么值就等于变量的值;如果给定变量的值为空,那么等于后面给出的字符串值,并且变量的值都不会发生变化。
  • :=  :表示,变量有值,那么值就等于变量值,如果变量值为空,那么变量值和表达式的值都为后面给出字符串的值。
  • :+  :表示,如果变量为空,那么表达式也为空;如果变量不为空,那么表达式的值等于给出字符串的值。
  • :?:表示,如果变量为空,那么现实为shell及脚本名:变量1:字符串。如果变量值不为空,那么表达式的值等于变量的值。

条件测试

test -f "$1"或者 [ -f "$1" ];注意[之后有一个空格,]之前有一个空格

ps:尴尬,我的虚拟机没有调,导致虚拟机里粘贴不出来、。

 

 

 

 

 

posted @ 2018-10-15 14:41  轻抚丶两袖风尘  阅读(291)  评论(0编辑  收藏  举报