• Linux shell 基础


      

    目录

    一、shell脚本的基本使用

    1、语言规范

    2、变量

    3、重定向(>,>>)

    二、运算符和常用判断

    1、比较运算符

    2、逻辑运算符

    3、常用判断

    三、程序结构

    1、分支(if语句)

    2、循环

    四、函数

    shell的本质是一段应用程序,它使得用户和操作系统之间可以交互,是用户和操作系统的中介。

    一、shell脚本的基本使用

    1、语言规范

    (1)文件以.sh结尾;

    (2)文件头为:#!/bin/bash (表示使用的是bash shell);

    (3)以#开头为注释;

    (4)输出: echo "输出内容";

    (5)读取:read -p "自定义读取提示" name   (name为读取内容设置的变量名,也可设置多个变量名,以空格分隔,在读取内容时也会以空格分隔内容并分配到相应的变量名)

    2、变量

    (1)变量的创建级赋值

    变量名=变量值

    变量名不用声明类型,由字母、数字和下划线组成,但不能以数字开头;默认的大写变量名表示系统变量,小写表示普通变量;

    变量值可以为字符、数字和命令,当变量值为命令时需用反单引号(即esc下边的键)包围起来;

    例:w=1`ls -l`

    (2)变量值的输出($)

    需在变量前加上$符号,当使用echo加单引号时输出的只是纯文本,而不会将变量的值提取出来,想要得到变量的值,只能使用双引号将变量包围;

    显示所有用户自定的变量用命令:set

    显示所有的系统变量用命令:env

    (3)从程序外部给程序传递参数

    可在程序内部加上$1,表示从外部传进程序的第一个参数;同理$2表示第二个参数,外部的多个参数之间以空格分隔。

    例:给程序a.sh传入ab,22两个参数,使用命令:a.sh ab 22

    $0表示程序自身,$#表示所有输入参数的个数,$@表示所有的参数。

    如果不是很明了可参考python中的sys.argv,机理基本一样 http://www.cnblogs.com/aland-1415/p/6613449.html

    3、重定向(>,>>)

    即通过命令将结果输入到文件中

    例:ls -l >name.txt

    如果文件不存在将会创建文件,如果文件存在,使用“>”时将会对文件进行覆盖重写,使用“>>”将会在文件的末尾进行追加写入。

    也可以在>或>>前加上1或2,注意不要与>,>>之间有空格,其中1表示正确的命令,2表示错误的命令。

    二、运算符和常用判断

    1、比较运算符

    等于:==

    不等于:!=

    大于:>或-gt

    小于:<或-lt

    大于等于:>=或-ge

    小于等于:<=或-le

    在使用(( ))中的条件中只能使用>等符号而不能使用-gt,在shell中(( ))和[]在一定程度上是等价的。

    2、逻辑运算符

    逻辑与:-a

    逻辑或:-o

    逻辑非:!

    3、常用判断

    -r 文件名:文件是否存在且可读

    -w 文件名:文件是否存在且可写

    -x 文件名:文件是否存在且可执行

    -f 文件名:判断文件是否存在且是普通文件

    -d 文件名:文件是否存在且是目录

    -e 文件名:文件是否存在

    -z 变量:判断字符串长度是否等于0

    -n 变量:字符串长度是否不等于0

    在需加[]的条件判断中,如果在-r等前边加上test则不用加[];

    三、程序结构

    1、分支(if语句)

    (1)基本格式:

    if [ 条件 ]

    then

    语句1

    else

    语句2

    fi

    注意:每个[ ] 左右两端都需要有空格,条件语句中如果包含变量则需要用双引号包围。

    then也可以写在条件之后,不过要在条件之后加上分号。

    (2)多个条件连接格式:

    if [ condition1 ] ;then

    sentence1

    elif [ condition2 ] ;then

    sentence2

    elif [ condition3 ] ;then

    sentence3

    else

    sentence4

    fi

    (3)case选择

    使用格式:

    case $变量名 in

    "值1")

    语句1;;

    "值2")

    语句2;;

    ...

    *)

    语句n

    esac

    其中;;表示语句结束,*)表示上边所有结果都不符合的最后选择;

    值也可以用区间,但最多只能用0-9的数字。

    2、循环

    (1)while循环

    格式

    while [ 条件 ]

    do

    语句

    done

    常用循环变量变化写法:

    ((i++))

    ((i+=1)

    let i=i+1

    i=$(($i+1))

    i=$ [ $i+1 ]

    常用运算迭代写法:

    ((sum=$sum+$i))

    sum=$[$sum+$i]

    sum=$(($sum+$i))

    (2)for 循环

    for 迭代子

    do

    语句

    done

    for循环常用迭代子的写法:

    ((i=1;i<=10;i++))

    i in 1 2 3 4 5 6

    i in `seq 1  2  15`  #1和15表示起始点,2表示步长

    四、函数

    函数构造

    函数名(){

    内容

    }

    函数调用直接用函数名即可。

  • 相关阅读:
    博客园的Windows Mobile开发专栏
    使大脑迟钝的9种不良习惯
    javascript中实现QueryString的function
    DeviceIoControl实现异步的方法总结
    List of Scientist`s Names
    制版经验谈
    AVRUSB技术探讨(转)
    unexpected WaitForXfer() behavior
    openMP讨论帖
    全角半角SBCDBC
  • 原文地址:https://www.cnblogs.com/aland-1415/p/6670781.html
Copyright © 2020-2023  润新知