bash脚本中使用选项 getopts】的更多相关文章

原文链接 : http://note.youdao.com/noteshare?id=0cf08484c7308c763726e63e9a638ff5&sub=EF6A110E2F3345E6AAA4075BE3894062…
getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数.getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后面跟着一个冒号,表明该字符选项需要一个参数,其参数需要以空格分隔.冒号和问号不能被用作选项字符.getopts每次被调用时,它会将下一个选项字符放置到变量中,OPTARG则可以拿到参数值:如果option前面加冒号,则代表忽略错误: 命令格式: getopts optstring name [arg…
出于安全性的考虑,不建议在bash脚本中注释掉不使用的代码.也就是说如果某段代码不使用了,那么应该删除掉,而不是简单地注释掉.假如你突然意识到这一点,而以前并没有遵从这个原则,现在需要找出脚本中的注释性代码,这可能是一个不小的工作量,让我们写一个脚本来帮助你吧,准确性无法达到百分之百,但是能够提升效率. 1.找出注释性代码的特点. 因为是bash脚本,注释行必然包含# grep "#" 2.判断其是普通注释还是代码注释 这是重点,也是难点,如何判断一个注释行是普通注释还是对代码的注释呢…
更多精彩内容,请关注微信公众号:后端技术小屋 alias的使用 在日常开发中,为了提高运维效率,我们会用alias(命令别名)来定义命令的简称.比如在~/.bash_profile中添加: alias ll='ls -lrt --color' alias bdebug="go build -gcflags '-N -l'" alias py3='/usr/bin/python3' 执行source ~/.bash_profile之后,这些alias定义便载入到当前终端环境中,我们可以通…
一.文件測试操作符 假设以下的条件成立将会返回真. -e 文件存在 -a 文件存在 这个选项的效果与-e同样. 可是它已经被"弃用"了, 而且不鼓舞使用. -f 表示这个文件是一个 一般 文件(并非文件夹或者设备文件) -s 文件大小不为零 -d 表示这是一个文件夹 -b 表示这是一个块设备(软盘, 光驱, 等等.) -c 表示这是一个字符设备(键盘, modem, 声卡, 等等.) -p 这个文件是一个管道 -h 这是一个符号链接 -L 这是一个符号链接 -S 表示这是一个socke…
有些开发人员会用Bash来实现很复杂的功能,就像使用别的高级语言一样.他可能觉得自己很牛逼但其他人早就想锤爆他了,Bash的可读性和可维护性远远低于任何高级语言.更要命的是,Bash并没有方便的调试工具和防错机制,出了问题你要排查半天. 在Ruby或者Python等高级语言里,你很容易知道错误是哪行什么类型的错误,还有IDE的Debugger加持.而Bash只能看源码,通过打印log等非常低效的方式调试. 本文将介绍Bash中 set -euxo pipefail,它们可以帮助你写出更容易维护也…
在Linux bash shell中,语句中的分号一般用作代码块标识 1.单行语句一般要用到分号来区分代码块.比如: weblogic@pmtest:/$if [ "$PS1" ]; then echo test is ok; fi test is ok 该脚本或命令行中,须要两个分号才为正确的语句,第一个分号是then 前的分号,用于标识条件块结束.第二个分号在fi前,用于标识then块结束,假设缺少这两个分号,则程序运行错误. 这里有趣的是echo后的字符串不须要使用引號也能正确地…
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 这是stackoverflow上推荐的方法 http://stackoverflow.com/questions/4774054/reliable-way-for-a-bash-script-to-get-the-full-path-to-itself 我看了两遍,不明觉厉 后来改了一下: #DIR="$( c…
1. 普通数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小.类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0. 1.1 定义数组 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开.定义数组的一般形式为:     array_name=(value1 ... valuen) array_name=(value0 value1 value2 value3) array_name=( value0 v…
mr.sh: line 1: HADOOP_CMD: command not found mr.sh: line 4: INPUT_FILE_PATH: command not found mr.sh: line 6: OUTPUT_PATH: command not found mr.sh: line 8: fs: command not found Illegal option: / Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file…
从此编写 Bash 脚本不再难 原创 Linux技术 2017-05-02 14:30 在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE. -- Aaron Kili 本文导航 -什么是 bash-support.vim 插件? …… 05% -如何在 Linux 中安装 Bash-support 插件 …… 10% -如何在 Vim 编辑器中使用 Bash-support 插件 …… 17% -如何为…
我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的讲解,理论上是不够的,但是限于时间.篇幅和精力,确实无法讲解的足够深入.在接触了骏马金龙的博客以及bash官方站点后,就会理解骏马兄说的“平常我们学的只是bash的形,而不是bash的神”.最近在写这个系列的学习笔记,经常查阅bash官方手册,真的是有种醍醐灌顶的感觉,但是限于能力和进度问题,有些问题暂且无法…
该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等!脚本功能:  ping一个网段内的IP,检测哪些IP在线,哪些IP不在线练习的命令:1.mktemp   用法:#mktemp 1117.www.qixoo.qixoo.com/Path/To/SomeFile.XXX 其中XXX可以为多个,是由系统随机生成的一段字符串          -d  创建为目录2.ping 测试网络是否通畅  用法…
我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨 Bash 脚本语言中的美学与哲学. 这不是一篇 Bash 脚本编程的教程,但是却能让人更加深入地了解 Bash 脚本编程,更加快速地学习 Bash 脚本编程. 阅读这篇随笔,不需要你有 Bash 编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于 Bash 的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我…
阅读目录 一.一切皆是字符串 二.引用和元字符 三.字符串从哪里来.到哪里去 四.再加上一点点的定义,就可以推导出整个Bash脚本语言的语法了 五.输入输出重定向 六.Bash脚本语言的美学:大道至简 总结: 我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一…
在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious,所以就以audacious为例,来实现音乐的播放. 第一步:进入一个目录,最好是自己特别选定的,如果用文件浏览器可以新建一个名为pm空白文档文件:如果是用终端可以输入命令:vi pm(可能会因为位置问题,需要添加sudo) 第二步:向新建的文档内输入命令: #!/bin/bash 注:此行最好添加…
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之间的内容按照数学公式进行排版,从而导致评论区格式混乱.如果大家的评论中用到了$,但是又不是为了使用数学公式,就请使用\$转义一下,谢谢. 想从头阅读该系列吗?下面是传送门: Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论 Linux 桌面玩家指南:02. 以最简洁的方式打造实用的…
小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习. 今天之所以起这个标题,把export,source ,bash这三个命令放在一起讲,实在是因为自己做了一件蠢事. 什么样的蠢事先不说.先分析下这三个命令. 首先是export命令. 1.export命令 Linux export命令用于设置或显示环境变量. 在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删除环境变量,供后…
Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 10 个写出高效可靠的 bash 脚本的实用技巧,它们包括: 1. 脚本中多写注释 这是不仅可应用于 shell 脚本程序中,也可用在其他所有类型的编程中的一种推荐做法.在脚本中作注释能帮你或别人翻阅你的脚本时了解脚本的不同部分所做的工作. 对于刚入门的人来说,注释用 # 号来定义. # TecM…
看以下的Bash脚本: #!/bin/bash interval=0 count=0 pid="" while getopts "p:d:n" arg do case $arg in p) pid=$OPTARG echo "pid: $pid" ;; d) interval=$OPTARG echo "interval:$interval" ;; n) count=$OPTARG echo "count:$coun…
我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于Bash的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我心中,我认为Bash就是…
  1.在文件里面输入一系列命令,可以直接执行吗? 可以.作者认为,这时调用的是当前用户默认使用的shell. 如果其中一个命令有错,后面的命令还是会继续执行下去的 如果说使用了”&&” ,如果前面的命令执行错误,,后面的命令不执行. 2.加#/bin/bash目的是什么,既然不加也可以? 这些不是注释符,而是说明下面的脚本是在什么shell下面运行的,并且以该shell环境来执行脚本.Linux中的shell有多种类型,其中最常用的几种是Bourne   shell(sh).C   sh…
(1).bash命令检测Shell脚本中的语法错误 bash -v [脚本] [root@youxi1 ~]# vim a.sh #/bin/bash sum=$[$1+$2] echoo $sum //故意写错 [root@youxi1 ~]# bash -v a.sh #/bin/bash sum=$[$1+$2] a.sh:行2: +: 语法错误: 期待操作数 (错误符号是 "+") //报错信息 echoo $sum a.sh:行3: echoo: 未找到命令 //报错信息 (…
将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但吃内存的“重量级”桌面环境,使用的就是最基本的X视窗+Sawfish窗口管理器的组合.在这样的环境下进行用户管理,都是通过命令行来完成.如,使用useradd命令添加新用户.不过,由useradd命令添加的用户只具有普通使用者的权限,不具备系统管理的能力.这样一来,就给一些常见的操作带来不便,如,使…
登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文options)或“参数”(英文arguments).即Linux中命令格式为: command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个选项或参数. 选项options: 选项是调整命令执行行为的开关,即,选项不同决定了命令的显示结果不同. 选项分为长选项和短选项. 短选项:比如-h,-l,-s等.(-   后面接单…
每个人或多或少总会碰到要使用并且自己完成编写一个最基础的Bash脚本的情况.真实情况是,没有人会说"哇哦,我喜欢写这些脚本".所以这也是为什么很少有人在写的时候专注在这些脚本上. 我本身也不是一个Bash脚本专家,但是我会在本文中跟你展示一个最基础最简单的安全脚本模板,会让你写的Bash脚本更加安全实用,你掌握了之后肯定会受益匪浅. 为什么要写Bash脚本 其实关于Bash脚本最好的解释如下: The opposite of "it's like riding a bike&…
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息对话框弹出,需要你的输入.对话框的类型有密码箱,检查表,菜单,等等.他们可以引导你以一种直观的方式输入必要的信息,使用这样的用户友好的对话框的好处是显而易见的.如下图所示: 当你写一个交互式shell脚本,你可以使用这样的对话框来接受用户的输入.whiptail可以在shell脚本中创建基于终端的对…
Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下   $#代表了命令行的参数数量,可以看以下实例: 复制代码 代码如下: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_20040701" exit…
本文转自:http://coolshell.cn/articles/1379.html Bash 是Linux操作系统的默认Shell脚本.Shell是用来处理操作系统和用户交互的一个程序.Shell的脚本可以帮助用户自动化地和操作系统进行交互.你也可以理解为一种脚本式的编程.即然有编程,那么,程序的编译器,解释器,调试器就必不可少了,Bash也一样,但在调试方面可能会有一些和编程语言不一样的东西和技术,所以,下面这篇文章主要是说明调试bash脚本的各种技术. 跟踪脚本的执行 你可以让bash打…
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用.所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行). 如同其…