shell命令可以忽略参数吗(shell对于用户输入的命令行如何进行处理)
本文目录
- shell对于用户输入的命令行如何进行处理
- 请问 linux和mac os 的shell命令通用吗
- shell命令 rm -f 什么意思
- powershell 命令 Copy-Item 复制文件时跳过把报错
shell对于用户输入的命令行如何进行处理
linux shell 处理用户输入
命令行参数
特殊参数变量
移动变量 shift 默认左移一个位数,可以在shift后面跟数字修改默认左移位数。shift 2 左移2位。
处理选项
获得用户输入
读取参数,$0程序名,$1第一个参数以此类推,直到$9。第10个参数开始需要用花括号把数字括起来 ${10}
读取程序名,默认$0是读取带路径的程序名,但是有时候只需要脚本名,并不需要路径,这时就可以用basename了,比如:
这样可以根据不同的脚本名执行不同的功能
测试参数,当需要参数而没有跟参数时会报错。所以需要检查数据是不是存在就很有必要,如下所示:
参数计数 $# 该变量记录脚本运行时的参数个数,如果要在大括号内使用该参数的话需要把$改为!因为大括号内不能使用美元符。
抓取所有的数据,$*和$@可以提供对所有参数的快速访问。$*把所有参数当成一个参数,$@会单独处理每个参数。
简单的选项
运行结果:
分离参数和选项
此处用破折号来区分选项和参数
处理带值的选项
如上图所示处理带值的选项 -b
getopt 命令,能够识别命令行参数
getopt options optstring parameters
optstring 列出你要在脚本中用到的每个命令行选项字母,然后再每个需要参数值的选项字母后加一个冒号。getopt会基于定义的optstring解析提供的参数。
如图所示: -b 选项需要参数所以b后面有个: 参数是test1 而test2 和test3是参数,用双破折号分开
当有无效参数出现的话会提示错误,如下图所示:
当加上-q选项时会忽略错误信息,如下所示:
注意-q 的位置
脚本中使用getopt
采用set命令 -- 选项会将命令行参数替换成set命令的命令行的值。首先原始的脚本命令行参数传给getopt,然后getopt把输出给set命令。比如下面
set -- `getopt -q ab:cd "$@"` 下面是一个例子:
getopts命令
getopts optstring variable,在optstring前面加个: 可以去掉错误消息。
getopts用到两个环境变量。如果选项需要跟一个参数值,OPTARG环境变量就会保存这个值。OPTIND环境变量保存了参数列表中getopts正在处理的参数位置。
对于未定义的选项统一输出成问号:
其中d是未定义的。
getopts处理每个选项时会将OPTIND环境变量值增一。
使用OPTIND的值和shift命令来移动参数,如下图所示:
其中OPTIND的值是记录参数的位置,移动-1个量正好到达参数的位置。
基本读取
-n选项会移掉字符串末尾的换行符,允许脚本用户紧跟其后输入数据。
-p 参数可以在read后面跟多个变量,依次赋值
如果read后面不跟变量,那么默认会把收到的数据放到特殊环境变量REPLY中
-t 设置超市时间,单位秒 ,超时后read命令会以非零退出状态码退出
-n后面的数字1 表示直接受一个字符然后就主动退出,不用再按回车键。
-s隐藏输入,事实上数据会被显示,只是read命令将文本颜色设置成跟背景色一样
从文件中读取
请问 linux和mac os 的shell命令通用吗
不完全通用。风格不一样的,mac 更偏向于传统 unix 风格。linux 更偏向于 geek 的随意风格。最明显的例子就是,linux 不限制某些命令参数的前后顺序,mac 的命令如果遇到了文件名的某些参数,可能目的文件名后面的参数全都忽略。另外,貌似他们的 shell 解释器也不是完全一样的,某些语法会有变化。总的来说,基本可以平滑更换平台而不需要重新学习,但需要适应阶段。
shell命令 rm -f 什么意思
rm -f 其中的,f参数 (f --force ) 忽略不存在的文件,不显示任何信息不会提示确认信息。rm则是删除的意思.
powershell 命令 Copy-Item 复制文件时跳过把报错
有这个参数-Force允许 cmdlet 复制非此不能更改的项,如复制只读的文件或别名。
更多文章:
仙剑奇侠传5激活码能用几次(仙剑5激活码,在官网看到说是可以激活2台电脑,台式和笔记本)
2023年8月22日 22:40
芭比娃娃小游戏(求一个芭比娃娃设计衣服的游戏,1999年玩的,不是小游戏,是光碟版)
2024年2月7日 12:20
俄罗斯方块消消消正版下载(玩俄罗斯方块消消消时广告怎么消除)
2024年7月25日 15:30
易采工程设备物资采购平台官网大于100M的文件如何处理?企业级采购平台哪个好易采办怎么样推荐几个靠谱点的
2024年7月2日 16:48
新浪微博怎么发长微博图片?新浪微博长微博怎么发找不到这个选项了
2024年6月3日 02:36
腾讯一键root工具(如何利用腾讯Android一键Root获取手机权限)
2024年7月8日 12:19
英雄连2:阿登突击和英雄连2:西线军团有什么区别?英雄连2正版如何汉化
2024年6月27日 14:07
玩dnf的玩家到腾讯公司dnf部门上班是一种怎样的体验?在腾讯工作是一种什么样的体验
2024年7月4日 07:04