美文网首页
shell学习笔记(一)

shell学习笔记(一)

作者: 喜欢萝莉的逗逼青年 | 来源:发表于2016-07-17 19:07 被阅读30次

1.特殊文件:/dev/null与/dev/tty

/dev/null:bit bucket(位桶),传送到此文件的数据都会被系统丢掉。相当于当程序将数据写到此文件时,会认为>已经完成写入的操作,但实际上是把数据丢到了垃圾桶,什么事情都没有做。当你需要命令的退出状态,而非是它的输出,此功能十分有用。
例如:测试一个文件是否含有某个模式时
if grep pattern file > /dev/null
then
...... 找到模式时
else
......没有匹配到
fi
/dev/tty :当程序打开此文件时,unix会自动将它定向到一个终端,在程序必须读取人工输入时有用。


2.位置参数:$0,$9,$[10]...

指的是shell脚本的命令行参数。位置参数是shell的一种特殊的变量,用于运行shell的时候向程序传递参数;
变量 $[nn] 表示第 nn 个位置参数;如不使用花括号,变量 $nn 的值不是第 nn 个位置参数的值,而是第 n 个位置参数的值后面加上 n;

命令行:sh test.sh 1 2 3 4 5 6 7 8 9

就是在向shell程序传递1-9,分别传递给程序中$1-$9,程序中就可以用到这些值了,因为跟位置有关系,所以叫位置参数。


3 if-elif-else-fi语句

在shell中用 if then elif else fi实现分支控制,有三种if......else 语句:

  • if.......fi语句
    if [ expression ]
    then
    Statement(s) to be executed if expression is true
    fi
    expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。

if命令的参数组成一条子命令,如果该子命令的exit states (退出状态)为0,表示为真,执行then后面的子命令。非0,为假,则会执行elif,else,或者fi后面的子命令。

  • if ... else ... fi 语句的语法:
    if [ expression ]
    then
    Statement(s) to be executed if expression is true
    else
    Statement(s) to be executed if expression is not true
    fi

如果 expression 返回 true,那么 then 后边的语句将会被执行;否则,执行 else 后边的语句。

  • if ... elif ... fi 语句

if ... elif ... fi 语句可以对多个条件进行判断,语法为:
if [ expression 1 ]
then
Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi
哪一个 expression 的值为 true,就执行哪个 expression 后面的语句;如果都为 false,那么执行else语句。

注意:if与[]之间有空格。[与expression之间要有空格,[与;之间不需要空格,命令和参数之间必须用空格隔开。


4.逻辑的NOT、AND、与OR

有时以否定状态表示if的条件匹配:

  • if ! grep pattern file >/dev/null
    then
    ..................
    fi

测试多个子条件:

  • if grep pattern1 filename && grep pattern2 filename
    then
    ..............................
    fi

shell会先执行 第一个,成功推出,执行第二个。两个都成功,整个语句成功,执行then后面的子命令

|| 同&&用法一样,只不过有一个成功,就视为条件语句成功。


5.test命令

test命令可以处理shell脚本里各类的工作,产生的并不是一般的输出,而是可使用的退出状态。test理解成测试命令即可。test命令另一种用法较为常见[.....]

if test "$str1"="$str2"
then
................
fi
if [ "$str1"="$str2"]
then
................
fi

这两种用法一样,通常使用后一种。

test主要用来测试文件属性,比较字符串及数字.

-d file file是目录
-e file file存在
-f file file 是一般文件
.......
s1 -eq s2 相等
-ne 不等
n1 -lt n2 小于
-gt 大于
-le 小于等于
-ge 大于等于

注意:在字符串比较的时候,有一种使用方式

if [ "X$str1"="Xgr" ]
在字符串前置字母X,为了防止字符串为空,导致test被混淆。

相关文章

  • Shell十三问 学习笔记

    文本处理 Shell脚本编程 Shell 十三问 学习笔记 shell and Carriage 关系 Shell...

  • Shell脚本

    shell脚本学习笔记 shell命令的组合运用 常用命令组合

  • Shell 学习笔记

    Shell 学习笔记 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是...

  • Shell学习笔记一

    Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种...

  • shell学习笔记(一)

    1.特殊文件:/dev/null与/dev/tty /dev/null:bit bucket(位桶),传送到此文件...

  • shell基本语法

    学习做的笔记,以防日后忘记方便查询?***********shell基本语法***********

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Linux操作系统命令汇总

    SHELL脚本学习笔记 标签(空格分隔): linux shell脚本 1. 常用命令汇总 alias 设置别名u...

  • shell命令总结(一)

    很久没写shell脚本了,最近在帮助新同学学习shell,所以也顺便整理一下,算是一个学习笔记。 使用变量 首先显...

  • shell学习笔记:shell简介

    1.Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过She...

网友评论

      本文标题:shell学习笔记(一)

      本文链接:https://www.haomeiwen.com/subject/uuqpjttx.html