首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bash解析命令行参数两种样例脚本

/bin/bash POSITIONAL_ARGS=() #初始化一个空数组,用来存储位置参数 while [[ $# -gt 0 ]]; do #当命令行参数数量大于0时,进入循环 case...$1 in -e|--extension) #如果参数是这个,脚本会将紧随其后参数(文件扩展名)保存在变量 EXTENSION EXTENSION="$2" shift...# 跳过参数 shift # 跳过后面的值 ;; -s|--searchpath) #如果参数是这个,脚本会将紧随其后参数(搜索路径)保存在变量 SEARCHPATH... SEARCHPATH="$2" shift # 跳过参数 shift # 跳过后面的值 ;; --default) #如果参数是这个,脚本会将变量...[@]}" # 将数组里参数设置为当前 shell 位置参数 echo "FILE EXTENSION = ${EXTENSION}" echo "SEARCH PATH = ${SEARCHPATH

15510

如何使用zx编写shell脚本

编写Shell脚本问题 创建一个由Bash或者zsh执行shell脚本,是自动化重复任务好方法。...你需要为子进程编写特殊处理程序,注意转义命令行参数,然后最终与stdout(标准输出)和stderr(标准错误)打交道。这不是特别直观,而且会使shell脚本变得相当笨拙。...Bash shell脚本语言是编写shell脚本普遍选择。不需要编写代码来处理子进程,而且它有内置语言特性来处理stdout和stderr。但是用Bash编写shell脚本也不是那么容易。...我们可以通过在package.json添加"type": "module"来表明项目中所有模块都是ES模块。或者我们可以将单个脚本文件扩展名设置为.mjs。...我们现在要给脚本添加一个 --directory命令行参数。 zx内置了minimist[11]包,它能够解析传递给脚本任何命令行参数

4.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NO.3 Shell脚本

    简单来说就是将需要执行命令保存到文本,按照顺序执行它。它是解释型,意味着它不需要编译。 若干命令 + 脚本基本格式 + 脚本特定语法 + 思想= shell脚本 什么时候用到脚本?...,禁止引用其他变量值,shell特殊符号都被视为普通字符 反撇号 `` 和$() 反撇号和括号里命令会优先执行,如果存在嵌套,反撇号不能用。...,$0 $#:脚本后面接参数个数 $*:脚本后面所有参数 $@: 脚本后面所有参数 $?...后台运行最后一个进程号 (当前终端) !$ 调用最后一条命令历史参数 !!...-ne 0 && echo "该进程不存在" || echo "该进程存在" done pgrep命令:以名称为依据从运行进程队列查找进程,并显示查找到进程id 选项 -o:仅显示找到最小(起始)

    85620

    Jenkins 远程启动nodejs失败,使用pm2守护Nodejs

    json格式 pm2 start npm -- start这条命令是pm2万能命令,pm2 start ,就是这一系列命令最豪华命令。这个json我们可以理解为一个任务参数描述文件。...通过这个json文件,我们把在命令行里面不好描述各种参数放到一个json文件里面来 pm2 start .json pm2 start命令json格式详解 ?.../bin/www.sh", //要执行脚本     "cwd":"./",            //项目所在目录     "exec_interpreter": "bash", } 实战例子demo..."cwd": "/opt/script/",  //脚本所在目录     "exec_interpreter": "bash",   //应用程序脚本类型     "exec_mode": "fork...结构,apps是一个数组,每一个数组成员就是对应一个pm2运行应用 name:应用程序名称 cwd:应用程序所在目录 script:应用程序脚本路径 log_date_format: error_file

    2.5K20

    shell_环境变量_常量_位置变量_运算(3)

    pstree -p f1.sh bash算术运算 bash随机数生成器 随机打印字体颜色 短路与&& 短路或|| a b 通过异或交换值 习题 编写脚本,统计/etc/passwd第10个用户和第20...,影响当前环境 { name=mage;echo $name; } 注意结尾也有;把命令当作一个整体去执行 位置变量 1. $1...$10表示执行脚本时后面跟第几个参数/脚本内部函数参数 1....显示输入所有的变量 1. $* 传递给脚本所有参数,全部参数合为一个字符串 2. $@ 传递给脚本所有参数,每个参数为独立字符串;脚本嵌套脚本使用 区别 : ex:.../link.sh >#script name is link.sh $0显示是当前执行脚本名称 不能将软连接再创建软连接 ls |wc -l 查看当前文件夹个数 pidof 查找指定进程进程号.../bin/bash echo "name=$name" 显示进程树 ----bash----f1.sh f1.sh为bash进程,局部变量间父子变量不可相互影响 不可相互传递

    66130

    Linux学习笔记(四)

    (这也是它们被称作环境变量原因)。这项特性允许你在内存存储数据,以便程序或shell运行脚本能够轻松访问到它们。这也是存储持久数据一种简便方法。...export somekey=somevalue # 一键创建全局环境变量 特别注意: 1.在父进程修改全局变量会影响子进程该变量; 2.但是在子进程修改该变量不会影响到父进程该变量。...注意:不需要$符号 注意:同创建环境变量一样,子进程删除在父进程export导出全局环境变量不会影响到父进程。...含有当前已设置别名关联数组 BASH_ARGC 含有传入子函数或shel脚本参数总数数组变量 BASH_ARCV 含有传入子函数或shell脚本参数数组变量 BASH_CMDS 关联数组,包含...match)时, 包含了匹配到模式和子模式 BASH_SOURCE 含有当前正在执行hel函数所在源文件名数组变量 BASH_SUBSHELL 当前子shell环境嵌套级别(初始值是0) BASH_VERSINFO

    1.1K10

    Shell:子shell概念

    子Shell本质可以理解为Shell进程,子进程概念是由父进程概念引申而来,在Linux系统,系统运行应用程序几乎都是从init(pid为1进程进程派生而来,所有这些应用程序都可以视为...如果在Shell脚本遇到子脚本(即脚本嵌套),就会先执行子脚本内容,完成后再返回父脚本继续执行父脚本内后续命令及语句。...可以使用$BASH_SUBSHELL变量来查看从当前进程开始子shell层数,$BASHPID查看当前所处BASHPID,这不同于特殊变量$$值,因为$$在大多数情况下都会从父shell中继承。...子shell分类 大致分为两类: sub shell:通过进程替换(cmd)、命令替换 child shell:通过以可执行文件方式运行shell脚本或直接在当前shell启动shell...注释:使用 fork() 函数可以创建一个子进程;除了 PID(进程ID)等极少参数不同外,子进程一切都来自父进程,包括代码、数据、堆栈、打开文件等,就连代码执行位置(状态)都是一样

    1.3K30

    BashShell变量

    var=value export var 在当前进程创建全局变量在当前进程所有子进程中都是可见。 在子进程创建全局变量在当前进程是不可见。...在子进程修改全局变量只对子进程及其更下层进程有效,对父进程是无效,即子进程修改无法反映到父进程,父进程全局变量仍然保持原样。 总而言之,即全局变量增删改查都只是向下单层单向独立继承。...BASH_ALIASES 含有当前已设置别名关联数组 BASH_ARGC 含有传入子函数或 Shell 脚本参数总数数组变量 BASH_ARCV 含有传入子函数或 Shell 脚本参数数组变量...当前子 Shell 环境嵌套级别(初始值是 0) BASH_VERSINFO 含有当前运行 Bash Shell 主版本号和次版本号数组变量 BASH_VERSION 当前运行 Bash Shell...6.1 $0 ~ $9 0 ~ 9 为命令行位置参数,0 是命令名,1 ~ 6.2 $# $# 记录了脚本运行时携带命令参数个数。

    2.4K30

    nodejs写bash脚本终极方案!

    ◆ 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义变量shell变量没有定义,仍然是可以使用,但是它结果可能不是你所预期。...,首先exec是异步,但是我们bash脚本命令很多都是同步。...exec:启动一个子进程来执行命令,与spawn不同是,它有一个回调函数能知道子进程情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是它需要指定子进程需要需执行...., stderr:... } 对象)。 # 否则,这将返回子进程对象,并且回调接收参数(代码、标准输出、标准错误)。...写bash脚本方案了,如果你们那边node环境不能随便升级,我觉得shelljs确实够用了。

    3.9K20

    在 Kubernetes 运行 Kubernetes

    sleep 1 done exec "$@" 但是需要注意是我们不能将上面的脚本作为容器 entrypoint,在镜像定义 entrypoint 会在容器以 PID 1 形式运行在一个单独...Docker Daemon 中有一个--cgroup—parent 参数来告诉 Daemon 将所有容器 cgroups 嵌套在指定 cgroup 下面。...当容器运行在 Kubernetes 集群下面时,我们在容器设置 Docker Daemon --cgroup—parent 参数,这样它所有 cgroups 就会被嵌套在 Kubernetes 为容器创建...在以前为了让 cgroup 文件系统在容器可用,一些用户会将宿主机 /sys/fs/cgroup 挂载到容器这个位置,如果这样使用的话,我们就需要在容器启动脚本把--cgroup—parent...,相对于嵌套 KinD 节点容器根 cgroup,在 kubelet 启动之前就存在了,这是上面我们讨论过 cgroups 挂载造成,通过 KinD entrypoint 脚本设置。

    2.8K20

    Shell 进阶指南

    系统终端实时 web 日志分析器及交互式查看器 histstat - 适用于 netstat 历史 htop - 基于 ncurses 交互式进程查看器,其目标是比 top 更好 lnav -...ansiweather - 终端天气预报,包含 ANSI 颜色及 Unicode 符号 bashblog - 处理 blog 投递 Bash 脚本 choosealicense-cli - 从终端选授權合約...对于特定 zsh 工具,参阅 Zsh 。...shell 函数 dispatch - 使用 50 行可移植 shell 脚本写成命令行参数解析器 is.sh - 内置 test 命令替代品,使 “if” 语句更漂亮 mo - 使用纯 Bash...实现 Mustache 模板 optparse - 针对 getopts BASH wrapper,用于简单命令行参数 rerun - 用来管理保留脚本模块化 shell 自动化框架 semver_bash

    2.7K71

    LinuxShell父子关系概述

    Linux Shell 在当前 Shell 执行脚本文件方式有: source script # 在当前 Shell 执行 script 文件 . script...子 Shell(subshell) 子 Shell 是父 Shell 进程调用了 fork() 函数,在内存复制出一个与父 Shell 进程几乎完全一样进程。...子 Shell 继承了父 Shell 所有环境变量(包括全局和局部变量) 可以通过环境变量 BASH_SUBSHELL(其值表明子 Shell 嵌套深度)判断是第几层子 Shell(0 说明当前...孩子 Shell(child shell) 孩子 Shell 是父 Shell 进程调用了 fork() 函数后又调用了 execve() 函数来执行新 shell 命令(比如 bash),从而覆盖...启动第一个 Shell 其 SHLVL 为 1) Linux Shell 创建孩子 Shell 方式有: bash script # 以 Bash Shell 为例,script 在孩子

    56920

    Linux命令行艺术

    其它大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。...日常使用 在 Bash ,可以使用 Tab 自动补全参数,使用 ctrl-r 搜索命令行历史。...在 Bash 脚本,使用 set -x 去调试输出,尽可能使用严格模式,使用 set -e 令脚本在发生错误时退出而不是继续运行,使用 set -u 来检查是否使用了未赋值变量,使用 set -o...: see failed command above'" ERR 在 Bash 脚本,子 shell(使用括号(...))是一种便捷方式去组织参数。...Amazon 官方 aws 以及 saws 是其他 AWS 相关工作基础。 了解如何使用 sort 和 uniq,包括 uniq -u 参数和 -d 参数,详见后文一行代码

    6.9K72

    nodejs 写 bash 脚本终极方案!

    前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义变量shell变量没有定义,仍然是可以使用,但是它结果可能不是你所预期。...,首先exec是异步,但是我们bash脚本命令很多都是同步。...exec:启动一个子进程来执行命令,与spawn不同是,它有一个回调函数能知道子进程情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是它需要指定子进程需要需执行...., stderr:... } 对象)。 # 否则,这将返回子进程对象,并且回调接收参数(代码、标准输出、标准错误)。...写bash脚本方案了,如果你们那边node环境不能随便升级,我觉得shelljs确实够用了。

    2.5K20

    shell programming tutorial

    因此在使用管道获取参数,我们一定要增加对于参数判断,或者,我们在sh和bash解释器, 增加set –o pipefail 设置,可以让管道执行结果是否成功,变得可信。...如果是嵌套循环,continue 命令后面也可跟一数字 n,表示回到第 n 重循环顶部。 exit n exit 命令用于退出脚本或当前进程。...这两个命令都以一个脚本参数,该脚本将作为当前shell环境执行,即不会启动一个新进程。所有在脚本设置变量将成为当前Shell一部 分。同样,当前脚本设置变量也将作为脚本环境。...sh -x xx.sh 是在一个脚本,调用另一个脚本执行,启动一个新进程,-x 会输出所有的执行信息。 脚本调用脚本,要对被调用脚本执行返回值进行判断。...参数同理,需要对脚本计算参数进行合理判断,提前发现错误,避免走入不可控制分支。 #!/bin/bash fun2() {     echo "This is fun2."

    1.4K90

    shell_正则_变量_tr_awk_sed_cut(1)

    /xx.sh 2.bash 或 cat xx.sh|bash 3.将脚本放在 PATH环境变量对应任意路径下直接运行(系统会直接在PATH环境变量脚本) 注意 : echo $PATH # /...默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互进程,很多时候,我们希望将其在后台启动,可以在启动参数时候加一个'&'实现这个目的。...脚本调试 1.命令错误 hostnam :命令继续向下执行 2.语法错误 syntax error :默认不会继续执行下去 脚本调试 bash -n file.sh 来检测脚本语法错误 bash...-x file.sh 跟踪脚本执行命令 注意: echo $HOSTNAME 显示+表示执行命令, echo `hostname` ++表示嵌套命令(两层) 变量 引用变量加$与不加...()进程和当前进程id一样 man bash bash使用说明书 查询()介绍 :/\(list\)

    1.1K20

    Shell基础

    入参和默认变量 对于shell脚本而言,有些内容是专门用于处理参数,它们都有特定含义 /home/shouwang/test.sh para1 para2 para3 $0 $1 $2 $3 脚本名...第一个参数 第二个参数 第三个参数 除此之外,还有一些其他默认变量,例如: $# 代表脚本后面跟参数个数,前面的例子中有3个参数 $@ 代表了所有参数,并且可以被遍历 $*代表了所有参数,且作为整体...,和$*很像,但是有区别 $$ 代表了当前脚本进程ID $?...代表了上一条命令退出状态 执行脚本方法 “./”:(相对或绝对路径)这种方法脚本必须得需要可执行权; sh:通过/bin/sh来解释脚本; source或“.”:内部命令来加载脚本内容。...:上一条命令执行后返回状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错 $0:当前执行进程/程序名 命令执行 在shell执行命令通常只需要像在终端一样执行命令即可,不过,如果想要命令结果打印出来时候

    85810
    领券