• Shell 脚本


    书写

    开头第一行可以以#! /bin/bash开头也可以不写,保存后的文件名可以以.sh结尾也可以不写,Linux系统会自动对文件类型进行识别。

    运行

    执行shell sh test1.sh这种执行方式可以不设置文件的属主还有权限,属于调用shell给它参数然后执行参数内的脚本。

    sh < text 为文本输入。

    shell环境变量

    $* 所有命令行参数的值
    $# 命令行参数的总数
    $$ 当前进程的进程ID(PID)
    $? 最后执行的一条命令的退出状态,返回值为0则成功,非0则失败
    $! 在后台运行的最后一个进程的进程ID
    

    位置参数

    共有10个位置参数,依次是:$0 ,$1 ,$2 ,$3 ,$4 ,$5 ,$6 ,$7 ,$8 ,$9 ,其中 $0 始终表示命令名或shell脚本名。

    set 给位置参数赋值

    set a b c 执行结果是把字符串a赋值给$1,b赋值给$2 ...依次赋值。但$0 不能利用set命令赋值,因为它始终是命令名。

    shift 移动位置参数

    shift 4 把位置参数左移4位。

    如果没有带参数,默认值为1。

    用户自定义变量

    shell脚本中的用户自定义变量拥有临时的存储空间。

    在shell编程语言中无需声明和初始化shell变量。

    一个未初始化的shell变量,其默认的初始值为空字符串。

    格式:

    mkdir=/home/zzm

    如果赋值给变量的值中有空格、制表符或换行符,要用引号把字符串包起来。

    赋值语句可以出现多个赋值,变量赋值可以迭代进行。各赋值动作是从右向左实现的。A = $B B=$C C=hello

    使用变量:

    在变量前面加一个$符。

    如果出现在长字符串中要使用{}把变量名包括起来。

    shell中的特殊字符

    * 匹配任意一个字符串
    ? 匹配任意一个字符
    [] 方括号中有一个字符组,匹配该字符组所限定的任何一个字符
    ! 表示不再一对方括号中的字符
    

    双引号

    除$,倒引号和反斜线()仍保留其特殊功能外,其余字符作为普通字符对待。

    倒引号

    1. shell解释执行
    2. 利用倒引号的shell解释功能可以进行命令替换,即把倒引号中的命令的结果赋值给指定变量。

    执行顺序操作符

    顺序分隔符 ; 多条命令可以在多行中键入,也可以将这些命令在一行中输入,但各条命令应以分好隔开
    管道线 | 也是顺序执行
    

    执行顺序操作符

    逻辑与&& 把两个或两个以上的命令联系在一起。

    第一个命令成功才运行后面的命令。命令执行成功返回值为0,失败为非0。

    执行顺序操作符

    逻辑或|| 把两个或两个以上的命令联系在一起。

    第一个成功则不运行第二个。

    注释符,反斜线

    # 注释符
     反斜线 把特殊字符变为普通字符。
    & 后台操作符
    

    输入输出命令

    shell参数意义

    $0  shell本身文件名
    $? 最后运行命令的返回值
    $! shell最后运行的后台process的PID
    $$ shell本身的pid
    $#  shell的参数个数
    $@ 所有参数列表, 以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个
    $*   所有参数列表, 以"$1" "$2" … "$n" 的形式输出所有参数
    
    
    有什么不同见解可以在评论区共同讨论
  • 相关阅读:
    [labuladong算法小抄]如何判断回文链表
    [PHP]json_encode中文JSON_UNESCAPED_UNICODE在php5.3返回null
    [javascript] 使用javascript实现webrtc视频聊天demo
    [Linux] grep查找文本时反斜杠转义问题
    [css] 使用css画文件夹icon和话筒icon
    [Go] 开源客服系统以及多商户客服系统-GOFLY在线客服
    [javascript] vue和elementui中的键盘事件
    Elasticsearch 学习之不停止服务,完成升级重启维护操作
    unassigned_shards一直无法分配
    Jenkins+Gradle实现打包时自定义项
  • 原文地址:https://www.cnblogs.com/lambertlt/p/13946294.html
Copyright © 2020-2023  润新知