Linux Shell脚本:处理文件、命令行参数与用户输入技巧
如何使用shell脚本删除文本文件中最后一个换行符
[root@localhostwwe]#cat-Egood$good$[root@localhostwwe]#1使用tr命令[root@localhostwwe]#tail-n1good|tr-d'\n'>>oo[root@localhostwwe]#.cat-Eoogood[root[/color]@localhostwwe]#2.将最后一个词改为“好”。删除一行[root@localhostwwe]#sed-i'$d'good[root@localhostwwe]#cat-Egood$3。
将oo中处理换行符的结果写入到good[root@localhostwwe]#sed-i'roo'gut[root@localhostwwe]#cat-Egood$gut[root@localhostwwe]#
shell对于用户输入的命令行如何进行处理?
linuxshell处理用户输入
命令行参数
读取参数,程序名$0,第一个参数$1等等,直到$9。
第10个参数必须用大括号括起来。
${10}
读取程序名称。
默认$0是读取程序名和路径,但有时只是程序名。
需要脚本名称,而不是路径。
此时可以使用基名称,例如:
这样就可以根据不同的脚本名称运行不同的函数
测试设置,当需要设置但不遵循会报错。
因此,需要检查数据是否存在,如下所示:
特殊参数变量
参数个数$#该变量存储脚本执行时的参数个数。
如果要在大括号中使用此参数,则必须将$替换为!因为美元符号不能用在大括号内。
为了捕获所有数据,$*和$@提供对所有参数的快速访问。
$*将所有参数视为单个参数,$@将单独处理每个参数。
移动变量偏移量默认左移一位。
您可以通过在移位后添加数字来更改默认的左移编号。
shift2左移2位。
处理选项
简单选项
执行结果:
单独的设置和选项
此处使用连字符来区分选项和参数
具有值的管理选项
如上图所示,值为-b的选项
getopt命令可以识别命令行参数
getoptoptionsoptstringparameters
optstring列出要在脚本中使用的每个命令行选项字母,然后在每个需要参数值的选项字母后面添加一个冒号。
getopt将根据定义的optstring解析提供的参数。
如图:-b选项需要参数,所以b后面有一个:参数为test1,test2和test3为参数,用双连字符分隔
当出现无效参数时,会显示错误,如下所示:
当添加选项-q时,会出现错误消息将被忽略,如图所示如下:
注意-q的位置
脚本中使用getopt
使用set-l命令'选项将用set命令的命令行值替换命令行参数。
首先,将原始脚本中的命令行参数传递给getopt,然后getopt将结果发送给set命令。
例如下面的
set--`getopt-qab:cd"$@"`下面是一个例子:
getopts
getoptsoptstringvariable命令,在optstring前面添加:去除错误信息。
getopts使用两个环境变量。
如果该选项需要参数值,则OPTARG环境变量将包含该值。
OPTIND环境变量保存了该参数在getopts处理的参数列表中的位置。
未定义的选项统一显示为问号:
其中d未定义。
getopts会将OPTIND环境变量的值加一处理每个选项时。
使用OPTIND值和shift命令来移动参数,如下图:
OPTIND值就是参数所在的位置被保存并且移动为-1。
数量恰好到达参数位置。
获取用户输入
基本阅读
-n选项将删除结尾来自换行符的字符串,允许脚本用户随后立即输入数据。
-p参数后面可以跟多个变量并依次赋值
如果read后面没有跟变量,则接收到的数据将默认放置在特殊的REPLY环境变量中。
中
-t设置超市时间(以秒为单位)。
超时后,读取命令将以非零退出状态代码退出。
-n后面的数字1表示直接接受一个字符,然后自动退出,无需按回车键。
-s隐藏条目。
实际上,数据会被显示,但读取命令将文本颜色设置为与背景颜色相同的颜色。
从文件读取