处理用户输入与显示数据------------(读取参数读取程序名称测试参数)

WEL测试 WEL测试     2022-11-28     498

关键词:

第4章 处理用户输入与显示数据

         有时候编写的脚本需要能够与运行脚本的人员进行交互。bash shell提供了一些不同的方法从用户处获取数据,这些方法命令参数(添加在命令后面的数据值)、命令行选项(修改命令行为的单字符值)和直接读取键盘输入。

         脚本显示信息方式有两种:将数据显示到监视器上、将数据重定向到文件里

4.1命令行参数与特殊的参数变量

         向shell脚本传递数据的最基本方式是使用命令行参数。使用命令行参数可以在执行脚本时向命令行中添加数值。

4.1.1 读取参数

         bashshell将在命令行中输入的所有参数赋值给一些特殊变量,这些变量称为位置参数。其中还包括shell执行的程序的名称。位置参数通过标准数字表示,其中$0为程序名称,$1为第一个参数,$2为第二个参数,以此类推,直到$9为第九个参数

         可以在shell脚本中像使用其他变量一样使用变量$1。shell脚本自动将命令行参数赋值给变量$1。无需用户干预。如果需要输入更多命令行参数,那么必须在命令行中使用空格分隔每个参数。shell将每个参数赋值给适当的变量,在命令行中也可以使用文本字符串

         记住,每个参数都是通过空格分隔,所以shell会将空格解析为两个值的分隔标志。要想在参数值中包含空格,就必须使用引号(单引号和双引号均可)。引号不作为数据的一部分,它们只是界定数据的起始和结束。

         如果脚本需要的命令行参数多余9个,那么可以继续在命令行中添加命令行参数,但是变量名称会稍有变化。在第九个变量之后,必须使用大括号将变量括起来,如$10。通过这一方法,可以根据需要为脚本添加任意数量的命令行参数。

         读取参数的操作实例如下:           

#!/bin/bash
#读取参数
echo "使用第1,2,3位置参数"
case $1 in
+ | -) [ $2 -ge $3 ] && echo "$2 $1 $3="$[ $2 $1 $3];;
*) echo "输入错误!";;
esac

echo "使用第4,5位置参数"
for(( i=1 ;i<=$4;i++ ))
do
echo "循环次数:$4"
echo "依次相乘:"$[ $i*$5 ]
done


echo "使用第6位置参数"
[ $6 == hello ] && echo $6" world!"

echo "使用第7,8,9位置参数"
if [ $[ $7 * $8 ] -eq 100 ]
then
echo "$7 * $8="$[ $7 * $8 ]
else
echo $9
fi

echo "使用大于9的位置参数"
[ $10 -gt $11 ] && echo "$10 - $11="$[ $10-$11 ]

第4章     

4.1.2 读取程序名称

         使用参数$0可以确定shell从命令行启动的程序的名称。在编写具有多个功能的工具时,这种方法非常方便。传递给变量$0的字符串实际上是程序的完整路径,而不仅仅是程序的名称。basename命令只返回程序名称,不带路径。可以使用这个方法编写基于使用的脚本的名称来执行不同功能的脚本。

         读取程序名称实例:        

#!/bin/bash

#读取程序名实例
echo "输入文件名:$0"
file=`basename $0`
if [ $file = addem ]
then
total=$[ $1 + $2 ]
elif [ $file = multem ]
then
total=$[ $1 * $2 ]
fi
echo "计算结果如下:"$total

第4章

4.1.3 测试参数

         在shell脚本中使用命令行参数时要非常小心。如果执行脚本时缺少参数,会产生糟糕的结果。当脚本认为参数变量中包含数据,但实际上其中并没有数据时,极有可能生成脚本错误小心。这种编写脚本方法很不好。好的方法是对参数进行检查来保证使用参数确实存在数据。在test命令中使用-n参数来检查命令行参数是否存在数据。      

#!/bin/bash
#使用-n参数来检查命令行参数是否存在数据
if [ -n "$1" ]
then
echo "Hello,$1"
else
echo "Dont exists $1"
fi

第4章


处理用户输入与显示数据------------(参数计数获取所有数据)

4.1.4参数计数        可以不必测试每个参数,而只对命令行中输入的参数个数进行计数。特殊变量$#中存储执行脚本时包含的命令行参数的个数。在脚本中的任意位置都可以使用这个特殊变量。 ... 查看详情

处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)

4.3获取用户输入        虽然提供命令行选项和参数是从脚本用户处获取数据的好方法,但有时脚本需要具有更高的交互性。有时在脚本执行过程中需要询问一个问题并等待执行脚本的人员的应答。bas... 查看详情

处理用户输入与显示数据------------(移位shift命令行参数选项)

4.2移位与选项        bashshell工具集中的另一个工具是shift命令。bashshell提供shift命令来帮助操作命令行参数。shift命令能够改变命令行参数的相对位置。        选项是由破... 查看详情

处理用户输入与显示数据------------(更高级的getopts命令标准化选项)

...sp;     getopt为在命令行中找到的所有待处理选项和参数生成一个输出,而与getopt不同,getopts命令顺序的对现有的shell参数变量进行处理。        每调用一次getopts, 查看详情

处理用户输入与显示数据------------(创建本地临时文件在/temp中创建临时文件创建临时目录tee命令)

...个特殊的目录位置,以供临时文件使用。Linux使用/tmp目录处理不需要永久保存的文件。大部分Linux发行版的系统配置都是在启动时自动删除/tmp目录中的任何文件。        系 查看详情

处理用户输入与显示数据------------(禁止命令输出lsof命令关闭文件描述符创建读取/写入文件描述符)

4.5创建自己的重定向        在脚本中重定向输入和输出时,并不局限于3中默认的文件描述符。在shell中最多可以有9个打开的文件描述符。其他6个文件描述符的编号从3~8。可以将这些文件描述符应用... 查看详情

输入框与显示框(代码片段)

...题网站,需要有一个输入框和一个显示框。输入框可以给用户输入简答题答案,为了让用户有更好的输入体验,需要可以支持换行符,并且在数据的数据行数超过原来设定好的输入框的高度时,输入框的高度自动增加,让用户能... 查看详情

练习11--提问(如何把数据读到程序里面去)

...t()函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型 查看详情

怎么实现python写网页后台实现与数据库交互

...代码使用git管理,并托管到github上.要部署到生产环境1、批处理脚本中,要想与用户实行交互,需要用到命令set配合/p参数一起使用。2、set命令是用来定义变量并赋值的,而使用/p参数后,set并不马上在命令中给变量赋值,而是另... 查看详情

mvc架构是啥意思?

...象之间的耦合度。MVC架构与传统的应用程序架构—输入,处理,输出给用户接口的模型相对应。它们也与基于域的多层企业级WEB应用相对应。MVC架构将应用分为三层—模型,视图,控制,并减弱它们各自的责任。每一层处理特定... 查看详情

处理用户输入(代码片段)

  脚本程序需要能与运行脚本程序的人员进行交互,bashshell提供了一些不同的方法来从用户处获取数据,这些方法包括命令行参数、命令行选项和直接读取键盘输入;1、命令行参数  向shell脚本传递数据的基本方式是使用命... 查看详情

SwiftUI,处理用户输入

】SwiftUI,处理用户输入【英文标题】:SwiftUI,handlinguserinputs【发布时间】:2021-03-2502:02:42【问题描述】:我是SwiftUI初学者,对UIKIT或更早版本的Swift编程知识了解为0。我正在使用SwiftUI制作一个非常简单的IOS应用程序,只是为了... 查看详情

使用用户输入从 MySQL 数据库中获取和显示数据

】使用用户输入从MySQL数据库中获取和显示数据【英文标题】:GettinganddisplayingdatafromaMySQLdatabaseusinguserinput【发布时间】:2021-03-1015:32:23【问题描述】:我正在尝试创建一个网页,用户在其中将ID号输入HTML表单,ID号用于从MySQL数... 查看详情

三层架构详解

...是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。BLL:(业务逻辑层): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。DAL:(数据访问层): 与数据库打... 查看详情

d5-操作系统命令

...复的所有命令。①格式:命令、空格、参数信息、空格、处理对象输入处理对象时,需要对处理对象所在路径输入清楚即绝对路径;或者在该对象的上级目录下操作即相对路径。②Linux系统目录结构a.Linux系统与Wi 查看详情

mvc设计模式与三层架构

...a、从用户端收集信息b、将用户信息发送到业务服务层做处理c、从业务服务层接收处理结果d、将结果显示给用户(2)业务逻辑层负责:a、从表示层接收输入b、与数据层交互执行已设计的业务c、操作(业务逻辑,系统服务等)d... 查看详情

如何在 laravel 中为用户显示 JSON 数据可读方式?

】如何在laravel中为用户显示JSON数据可读方式?【英文标题】:HowtodisplayJSONdatareadablewayforusersinlaravel?【发布时间】:2016-09-0421:09:44【问题描述】:在我的控制器中我有这样的publicfunctionshow(Document$document)$doc=DB::table(\'adjustments\')->... 查看详情

我如何优化这个搜索结构?

...项根据其字段值以不同方式显示。目前我建立了一个类来处理显示和另一个来处理搜索。搜索类使用多个用户输入构建SQL查询,在数据库中查询与用户输入匹配的项目的ID,并将ID以数组的 查看详情