zoukankan      html  css  js  c++  java
  • shell命令

    Shell学习

    第一节 基本语法

    变量 表达式 判断语句 If表达式

    一、先来看一个简单的shell程序:

    mkdir test

    cd test/

    vim example01.sh

    example.sh

    #!/bin/bash等于#!/bin/sh (#!跟shell命令的完全路径。 作用: 显示后期命令以哪种shell来执行这些命令, 可用which bash查看绝对路径, 如果不指定shell,以当前shell作为执行的shell)

    如果想以其他shell执行, 需写到绝对路径上 cat /etc/shells

    例如: 想写php脚本可用: #!/bin/php后期会以php来执行下面的命令

    echo "our first example"

    执行命令

    chord +x example.sh

    ./example.sh

    shell中以#开头表示,整行被当作一个注释,执行时被忽略。

    shell程序一般以.sh结尾

    总结: 创建shell程序步骤:

    第一步: 创建一个包含命令和控制结构的shell文件

    第二步:修改这个文件的权限使它可以执行

    使用 chmod u+x

    第三步: 执行

    方法1. ./example.sh

    方法2: 使用绝对路径

    方法3: 使用 bash example.sh

    二、shell变量

    变量是shell传递数据的一种方法。变量是用来代表每个值的符号名。

    例: x = 3 (x就是变量)

    Shell有两类变量: 临时变量和永久变量

    临时变量: 是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括用户自定义变量、位置变量、预定义变量。

    永久变量: 是环境变量,其值不随shell脚本的执行结束而消失。

    例:环境变量: echo $PATH

    用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找。(which ls去查找)

    用户定义变量: 由字母或下划线开头。由字母、数字或下划线组成,并且大小写字母意义不同。变量名长度无限制。

    使用变量值时,要在变量名前加上前缀”$”

    例:1VAR是非法变量

    变量赋值: 赋值号”=” 两边应该没有空格

    例: A=aaa (A = aaa会提示command not found)

    将一个命令的执行结果赋给变量:

    “`

    A=date

    echo $A

    “`

    “`

    B=$(ls -l) === ls l

    echo $B

    A=$B

    Echo $A

    “`

    可拼接成新的变量

    “`

    B=mon

    echo Today is $mon day

    echo Today is ${mon}day

    “`

    列出所有的变量: set命令

    set | grep DAY

    单引号和双引号区别

    单引号之间的内容原封不动的指定给变量。

    双引号取消了空格的作用,特殊符号的含义保留。

    删除变量 unset

    unset NAME

    位置变量和特殊变量

    位置变量 : shell执行解释执行用户的命令时,将命令行的第一个字作为命令名,而其它字作为参数。由出现在命令行上的位置确定的参数称为位置参数。

    位置变量: 使用$N 来表示

    $0 $n这个程序的第n个参数值 n=1…n

    特殊变量: 不能被修改。一执行程序时就有了,由以下特殊变量

    1. $* 这个程序的所有参数
    2. $# 这个程序的参数个数
    3. $$ 这个程序的PID
    4. $! 执行上一个后台程序的PID
    5. $? 执行上一个指令的返回值

    Read: 作用:从键盘中读入数据,赋值给变量

    expr: 作用shell变量的算数运算(整数型变量进行算术运算)

    语法: expr.表达式 (运算符之间要有空格)

    var1 = 8

    var2 = 7

    expr $val / 2(结果是4)

    $var1 + $var2`

    变量测试语句: test 测试条件(测试范围: 整数,字符串,文件)

    test str1 == str2 是否相等

    test str1 != str2 是否不相等

    test str 测试字符串是否不空

    test -n str 测试字符串是否为空

    test -z str 测试字符串是否为空

    测试整数

    test int1 -eq int2。等于

    test int1 -ge int2。>=

    test int1 -gt int2。>

    test int1 -le int2。<=

    test int1 -lt int2。<

    test int1 -ne int2

    可以省略test : [int1 -lt init2]

    文件测试

    test -d file 测试是否为目录

    test -f file 文件

    test -x file 可执行

    -r 可读

    -w 可写

    -e 文件是否存在

    -s 是否是空文件

    说明: 省略test : [-x file]

    ===== 流程控制 ====

    If 条件 then 语句1 ( else 语句2 ) fi

    扩展;分号表示两个两个命令写在一行互不影响

    多条件

    -a 或 && 逻辑与 -o 或 || 逻辑或

  • 相关阅读:
    旋转数组的最小值
    用堆栈实现队列
    二叉树的重建
    从尾到头打印链表
    实现替换空格
    java获取在各种编码下中文及英文的字符个数
    java定义一个二维数组
    java计算某个坐标是否在范围内
    java调用百度地图API
    map在遍历数据的过程中删除数据不出错
  • 原文地址:https://www.cnblogs.com/2oex/p/13173394.html
Copyright © 2011-2022 走看看