Linux【脚本 05】交互式shell脚本编写及问题处理([: ==: unary operator expected)[: ==: 期待一元表达式

这篇具有很好参考价值的文章主要介绍了Linux【脚本 05】交互式shell脚本编写及问题处理([: ==: unary operator expected)[: ==: 期待一元表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.原因

之前写了Windows的cmd脚本用来保存报告文件:

@echo off

cd
cd ./curl/bin
set /p exampleUrlHost=请输入服务的IP地址:
set /p exampleUrlPort=请输入服务的端口:

:start
echo **********************报告保存脚本**********************
echo 根据以下提示执行
echo 0 退出
echo 1 保存年度报告
echo 2 保存月度报告
echo 3 保存当天报告

set /p exampleUrlIndex=请输入要保存的结果序号:
if %exampleUrlIndex% == 1 (
set exampleUrlPath=/example/exampleYear
)
if %exampleUrlIndex% == 2 (
set exampleUrlPath=/example/exampleMonth
)
if %exampleUrlIndex% == 3 (
set exampleUrlPath=/example/exampleDay
)
if %exampleUrlIndex% == 0 (
exit
)

echo 正在保存...
curl http://%exampleUrlHost%:%exampleUrlPort%%exampleUrlPath%
echo 保存完成。

goto start

但是有时候服务仅在Linux环境上进行部署,所以要写一个shell脚本进行报告的保存。

2.Shell脚本

2.1 初始版本

简单的参数判断,这里只给出一个分支,脚本save.sh内容如下:

#!/bin/bash
if 	[ $1 == 1 ]; then
    echo 正在保存年度报告...
	curl http://exampleUrlHost:exampleUrlPort/example/exampleYear
	echo 保存完成。
else
    echo "脚本请带参数"
    echo "1 保存年度报告"
fi

此时如果执行脚本时没有携带参数,将会报错:

./save.sh: line 2: [: ==: unary operator expected

这个脚本的问题很多exampleUrlHost和exampleUrlPort都是固定的,有些时候需要修改后才能正确执行。

2.2 交互式 case 脚本

#!/bin/bash
echo "请输入服务的IP地址:"
read exampleUrlHost
echo "请输入服务的端口号:"
read exampleUrlPort

echo "请选择您的操作:"
echo "1 保存年度报告"
echo "2 保存月度报告"
echo "3 保存当天报告"
echo "4 退出"

read choice
case $choice in
  1)
    echo 正在保存年度报告...
	curl http://$exampleUrlHost:$exampleUrlPort/example/exampleYear
	echo 保存完成。
    ;;
  2)
    echo 正在保存月度报告...
	curl http://$exampleUrlHost:$exampleUrlPort/example/exampleMonth
	echo 保存完成。
    ;;
  3)
    echo 正在保存当天报告...
	curl http://$exampleUrlHost:$exampleUrlPort/example/exampleDay
	echo 保存完成。
    ;;
  4)
    exit 0
    ;;
  *)
    echo "无效的选项!"
    ;;
esac

这个版本不仅不报错,似乎体验还是可以的,但是想导出多个报告就要多次输入IP和端口号,比较麻烦。

2.3 最终 while case 版

#!/bin/bash
echo "请输入服务的IP地址:"
read exampleUrlHost
echo "请输入服务的端口号:"
read exampleUrlPort

while true; do

	echo "请选择您的操作:"
	echo "1 保存年度报告"
	echo "2 保存月度报告"
	echo "3 保存当天报告"
	echo "4 退出"
	
	read choice
	
	case $choice in
	1)
		echo 正在保存年度报告...
		curl http://$exampleUrlHost:$exampleUrlPort/example/exampleYear
		echo 保存完成。
		;;
	2)
		echo 正在保存月度报告...
		curl http://$exampleUrlHost:$exampleUrlPort/example/exampleMonth
		echo 保存完成。
		;;
	3)
		echo 正在保存当天报告...
		curl http://$exampleUrlHost:$exampleUrlPort/example/exampleDay
		echo 保存完成。
		;;
	4)
		break  
		;;
	*)
		echo "无效的选项!"
		;;
	esac
done

3.总结

简单的版本也是可以实现功能的,但是执行前要进行脚本的调整。文章来源地址https://www.toymoban.com/news/detail-494235.html

到了这里,关于Linux【脚本 05】交互式shell脚本编写及问题处理([: ==: unary operator expected)[: ==: 期待一元表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows弹出交互式服务检测一键取消bat脚本

    新建一个bat文件,将下面的脚本拷贝进去,保存,双击即可 禁用服务:重启电脑的时候不会启动 停止服务:立即停止服务,马上生效的

    2024年02月09日
    浏览(39)
  • Jupyter Notebook交互式绘图不显示问题

    今天在Jupyter Notebook执行吴恩达机器学习-可视化举例( C1_W1_Lab04_Cost_function_Soln )的代码时,plt_intuition和soup_bowl函数对应的图形不显示。 解决办法: 在程序中加一行代码 如下图所示:

    2024年02月14日
    浏览(36)
  • Linux中用于自动化交互式程序的工具!expect

    expect 是一个用于自动化交互式程序的工具,它可以模拟用户输入和接收程序的输出。它通常与Tcl脚本一起使用,但也可以与其他脚本语言一起使用。 expect 的主要功能是等待特定的字符串或正则表达式出现,然后执行相应的操作。 expect的基本语法如下: 参数说明: 代码块案

    2024年01月16日
    浏览(36)
  • 【linux命令讲解大全】150.smbclient:交互式访问samba服务器的命令行工具

    交互方式访问samba服务器 补充说明 smbclient 命令属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源。 语法 选项 -B ip地址 :传送广播数据包时所用的IP地址; -d 排错层级 :指定记录文件所记载事件的详细程度; -E :将信息送到标准错误输出设备;

    2024年02月03日
    浏览(64)
  • 人机交互学习-6 交互式系统的设计

    Allan Cooper建议不要过早地把重点放在小细节、小部件和精细的交互上会妨碍产品的设计,应先站在一个高层次上关注用户界面和相关行为的整体结构 Allan Cooper提出的交互框架不仅 定义了高层次的屏幕布局 ,同时定义了 产品的工作流、行为和组织 。它包括了6个主要步骤:

    2024年02月09日
    浏览(54)
  • 人机交互学习-5 交互式系统的需求

    关于目标产品的一种陈述,它指定了产品应做什么,或者应如何工作 应该是具体、明确和无歧义的 搜集数据 解释数据 提取需求 注:了解 功能不同 智能冰箱:应能够提示黄油已用完 字处理器:系统应支持多种格式 物理条件不同 移动设备运行的系统应尽可能小,屏幕显示限

    2024年02月09日
    浏览(53)
  • Pyspark交互式编程

    Pyspark交互式编程 有该数据集Data01.txt 该数据集包含了某大学计算机系的成绩,数据格式如下所示: 根据给定的数据集,在pyspark中通过编程来完成以下内容: 该系总共有多少学生; (提前启动好pyspark) 该系共开设了多少门课程; Tom同学的总成绩平均分是多少; 求每名同学的

    2023年04月08日
    浏览(45)
  • 构建一个动态交互式图表

    在Web开发中,JavaScript不仅是实现交互效果的关键,还可以用于构建复杂的可视化组件,如动态交互式图表。在本篇博客中,我将演示如何使用JavaScript和HTML5的Canvas元素来创建一个简单的动态条形图。 HTML结构  首先,我们需要一个HTML结构来容纳我们的图表。 JavaScript实现 接下

    2024年02月20日
    浏览(49)
  • 【非交互式零知识证明】(下)

    继续上一节的内容,我们首先再回顾一下经典交互式零知识证明。 交互式零知识证明的一般模型如下: (1)证明者和验证者共享一个公共输入,证明者可能拥有某个秘密输入; (2)如果验证者认可证明者的响应,则输出Accept,否则输出Reject。 经典交互式零知识证明除了应

    2024年02月04日
    浏览(41)
  • Matlab交互式的局部放大图

    在数据可视化中,很多时候需要对某一区间的数据进行局部放大,以获得对比度更高的可视化效果。下面利用 MATLAB 语言实现一个交互式的局部放大图绘制。 源码自行下载: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取码:9dyl 使用方法 : 1.将 BaseZoom.m 和 parameters

    2024年01月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包