Linux中Shell脚本命令替换和grep接收变量作为参数

2023-11-08

需求:再服务器上启动Springboot项目上,使用Shell脚本作为启动脚本去执行,然后调用jar包。在本项目,需要从配置文件application.properties中去获取端口号,然后根据端口号去获取进程的PID。

问题:第一,如果获取配置文件中的端口号;第二,把端口号获取到赋予变量时,查询PID时grep的参数是变量,结果查询不出?

解决措施:

针对第一个问题:

在Shell脚本中,使用$(linux命令)或`Linux命令`去把命令查询结果赋予变量

server_port=$(cat ./application.properties | grep "xxl.job.executor.port" | tail -n 1 | cut -d "=" -f 2 | awk '{print $1}')
# 解析
# cat ./application.properties 读取和当前脚本同目录下application.properties文件
# grep "xxl.job.executor.port"    查询"xxl.job.executro.port"属性所在行内容
# tail -n 1           显示当前数据第一行
# cut -d "=" -f 2     以=为分隔符,截取第二项
# awk '{print $1}'    输出当前数据第一项
# server_port=$(xxx)       把$()中所输出的数据赋予变量server_port 

针对第二个问题,使用以下命令根据端口号去获取PID值

netstat -nlp | grep $server_port | awk '{print $7}' | awk -F"/" '{ print $1 }'

却发现如果把变量$server_port换成固定端口号(如直接在shell脚本中使用server_port=9992)是可以查询出PID,但是动态从配置文件中获取却没有值?这是为什么呢?

原因:配置文件application.properties是windows下编辑的文件内容,在Linux中它的回车/换行符是不一样的,所以从配置文件中获取的数据赋予server_port变量,虽然使用echo $server_port输出都是9992(假设配置文件中设置为9992),但它实际上还带了一个\r换行符。

可以使用命令显示出不可见字符的Shell脚本内容,发现变量$server_port的值为"9992\r"

bash -x xxx.sh

解决办法:在第一个问题的解决方案(即从配置文件中获取端口号)的命令中加一条命令用于去除\r

server_port=$(cat ./application.properties | grep "xxl.job.executor.port" | tail -n 1 | cut -d "=" -f 2 | awk '{print $1}' | tr -d '\r')

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中Shell脚本命令替换和grep接收变量作为参数 的相关文章

  • 如何加载椭圆曲线 PEM 编码的私钥? [复制]

    这个问题在这里已经有答案了 我使用 OpenSSL 生成了椭圆曲线私钥 公钥对 私钥和公钥均采用 PEM 编码 我已经弄清楚如何加载公钥 感谢this https stackoverflow com a 40439081但是 我无法弄清楚如
  • 在Tomcat中设置环境变量TESSDATA_PREFIX

    我们正在使用名为 Tess4J 的 Tesseract OCR Java 库 如果作为独立应用程序运行 它可以正常工作 它需要一个名为 TESSDATA PREFIX 的变量 其中包含 tessdata 配置和其他字符集相关文件 它也可以与
  • Android Studio 找不到 com.android.support:support-v4:19.1.0

    我已将一个项目导入Android Studio但我收到错误 找不到 com android support support v4 19 1 0 我在哪里可以找到这个文件 我已经使用导入了项目Gradle 我有Android Studio v
  • JavaFX 动画使用循环?

    我正在尝试制作一款类似太空侵略者的游戏 我画了一个正方形 我想通过使用循环逐步向下移动它thread sleep 然而 正方形立即被绘制出来 我知道有可以使用的动画路径 但我想保持低水平并仅使用坐标系 有没有办法使用这样的循环来制作时间轴动
  • Android Google 地图:隐藏整个地图的多边形或形状

    我试图隐藏除一个区域之外的整个地图 因为我使用的多边形在我想要显示的区域中有一个洞 问题在于 根据缩放的不同 空白区域会被多边形的颜色覆盖 或者多边形会失去其颜色 这是代码 polygon hide all world map float
  • EasyMock : java.lang.IllegalStateException: 1 个匹配器预期,2 个记录

    我在使用 EasyMock 2 5 2 和 JUnit 4 8 2 通过 Eclipse 运行 时遇到问题 我已阅读此处所有类似的帖子 但尚未找到答案 我有一个包含两个测试的类 它们测试相同的方法 我正在使用匹配器 每个测试单独运行时都会通
  • 添加和完成 PHP 源代码文档的工具 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个已完成的较旧的 PHP 项目 其中有很多内容 我想以 javadoc phpDocumentor
  • 无法从 ViewPager 中的 Fragment 编辑 ActionBar 标题

    我有一个Activity它通过一个托管多个片段ViewPager 在活动的onCreate方法我使用以下代码来更改ActionBar title Toolbar toolbar findViewById R id toolbar setSu
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • Android 以编程方式停止 toast 通知?

    有没有办法以编程方式停止 Toast 消息 假设我有一个按钮 单击它可以滚动 toast 消息 并且在 onclick 事件中我想停止队列中的所有消息并只显示新消息 我该怎么做 我的代码的简化版本如下 代码 public class Hel
  • JavaFX 8 默认消息图标

    随着 JavaFX 的最近几次更新 我们收到了警报 我想获取消息的默认图标 错误 警告 在Swing中 我可以通过一些方式获取L F消息图标UIManager的属性 如何在 JavaFX 中获取消息的默认图标 它们是包含在属性中 还是由 C
  • SecurityContextHolder.getContext().getAuthentication() 返回 null

    我想使用以下代码手动绕过 spring Security 的用户 User localeUser new User UsernamePasswordAuthenticationToken auth new UsernamePasswordA
  • 如何设置 commons-logging 来使用 logback?

    我们使用 slf4j logback 并且碰巧有一些使用 commons logging 的第三方库 如何设置它以使用 logback 答案是不要使用 commons logging jar 因为 SLF4J 的设计目的与 commons
  • 用什么? MVC、MVP 或 MVVM 还是……?

    我将启动一个 Java 项目来开发桌面应用程序 使用什么作为表示层模式 MVC MVP MVVM 或 如果可能的话 举一些可行的小例子 Actually the ultimate post you re looking for is thi
  • 从 IntelliJ 运行 JavaFX 应用程序

    Versions openjdk版本 11 0 11 2021 04 20 OpenJDK 运行时环境 build 11 0 11 9 Ubuntu 0ubuntu2 20 10 OpenJDK 64 位服务器虚拟机 内部版本 11 0 1
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc
  • Java分数计算器

    我对 Java 编程还很陌生 我的 AP 计算机编程课程有作业要完成 所以请耐心等待 我必须弄清楚如何将两个分数相乘 我想知道是否有任何方法可以在方法内部声明变量并在该方法外部使用它 我在介绍方法中的 while 循环 谢谢您 希望这不会令
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用
  • 如何获取 res.drawable 文件夹的路径来复制文件?

    我正在编写我的应用程序AndroidStudio 我的里面有gif文件drawable gifs文件夹 我希望将该文件复制到MediaStore Images Media单击按钮后的文件夹 目前 即使使用发布的一些答案 我也无法获取我的 g
  • 是什么让热部署成为“难题”?

    在工作中 我们经常遇到这样的问题 永久代内存不足 http www jroller com agileanswers entry preventing java s java lang例外 团队负责人认为这是 JVM 中的一个错误 与代码的

随机推荐

  • JavaScript—ES6 元编程(5)

    几年前 ES6 刚出来的时候接触过 元编程 Metaprogramming 的概念 不过当时还没有深究 在应用和学习中不断接触到这概念 比如 mobx 5 中就用到了 Proxy 重写了 Observable 对象 觉得有必要梳理总结一下
  • openGL之API学习(一一一)glUniform

    设置当前着色器程序中的一致变量的值 具体包含一系列函数 void glUniform1f GLint location GLfloat v0 void glUniform2f GLint location GLfloat v0 GLfloa
  • 持安零信任加入PKS体系生态联盟,共创办公安全新生态

    近日 PKS体系生态联盟公布最新一期会员单位名单 零信任办公安全领域的明星企业持安科技成为其网络安全领域新增会员 未来将与众多合作伙伴一同建设网络安全强国 PKS体系生态联盟是在中国电子信息产业集团有限公司的倡议下 广泛联合中央企业 国家研
  • html5--自定义属性

    一 添加属性 第一种不能html结构上看到 1 直接添加 通过querySelector获取到html元素之后 直接 属性进行初始化就可以为元素添加自定义属性了 div 123 div 2 setAttribute 属性名 属性值 添加自定
  • UML概述及UML类图详解

    引言 UML图有很多种 但是并非必须掌握所有的UML图 才能完整系统分析和设计工作 一般说来 在UML图中 只要掌握类图 用例图 时序图的使用 就能完成大部分的工作 也就是说 掌握UML的20 就能做80 的事情 对于程序员来说 最频繁使用
  • Unity_如何改变Image图片

    被改变的物体 public GameObject Tab3 需要改变的图片 public Sprite Tab3Img 加载将要用于修改的图片的路径 public string TabImgPath2 Image 2 void Start
  • vue 实现无缝向左滚动 鼠标悬停、离开时停止、开始滚动

    效果 可以根据此代码改为轮播 html代码
  • od机考真题-TLV解码

    while 1 try Tag input dct nums input split
  • 静态链接和动态链接

    静态链接 由于在我们实际的开发中 不可能将他们都放在一个文件中执行 所以将他们生成 o文件进行 从而要将他们进行链接 从而实现一个可以执行的程序 这个过程就是静态链接 静态库 是由多个多个 o文件压缩打包形成的一个文件 静态链接的优点 他在
  • linux的判断命令test之数值判断

    判断命令test一般用于脚本当中 可以简写为中括号 其会对跟随的条件进行判断 一般可以分为数值判断 字符串判断和文件判断 语法格式为test 判断条件 或 判断条件 注意中括号 与判断条件之间必须存在空格 还需注意判断条件的判断符号与比较值
  • 【Ubuntu】手把手教你打造 【VS Code + Cmake + C/C++】 开发环境

    下载安装VSCODE CMAKE Cmake安装请看我的这篇帖子 https blog csdn net TU Dresden article details 122373789 spm 1001 2014 3001 5501 VScode
  • shell基础知识

    shell基础知识 脚本语言 脚本是短小的 用来让计算机完成一系列工作的程序 这类程序可以用文本编辑器修改 不需要编译 通常是解释运行的 是一个约定的标记 告诉系统其后路径所指定的程序即是解释此脚本文件的shell程序 shell变量 使用
  • maven集成单元测试插件

    1 maven不可允许忽略单元测试 2 引用jacoco version
  • 【Unity】 DoTween对UI进行DoFade操作存在问题及解决办法

    Unity DoTween对UI进行DoFade操作存在问题 Unity版本 5 2 5 4 当使用this GetComponent
  • 很好用的etcd可视化管理工具 etcdv3-browser

    etcd是一个高可用 强一致性的服务发现存储仓库的 是k8s里的一个基础组件 现在随着k8s的不断的被企业所使用 etcd也越来越被看好作为服务发现的好的组件之一 今天推荐的是一款用来对etcd进行管理的图形化管理工具 etcdv3 bro
  • (04)VTK移动模型,判断是否相交

    前言 在模型相交检测时 碰撞检测 使用了重写vtkInteractorStyleTrackballActor函数的自己构建的交互器 实现检测鼠标按键 并显示不同颜色在不同相交情况时 方法 重写 vtkInteractorStyleTrack
  • fastboot通用线刷工具_[教程] 小米手机解BL锁、线刷详细教程,适用于小米全系列手机...

    这几天看到论坛里很多人在问怎么线刷 下面我就做个详细的线教程大家看一下高手别喷我哈 此教程只适合刷官方MIUI包 进入正题 第一步 解BL锁 1 浏览器打开http www miui com unlock done html点击立即解锁 然
  • QT多线程

    本文档是自己所整理的一份文档 部分是原创 还转贴了网上的一此资料 已经标明了 难点是多线程的编写 是有源代码的 大家可以作为参考 用到的知识是视频采集 压缩解压 xvid 实时传输 jrtp 基于qt库所写的 由于本人对qt下的多线程还不很
  • Ubuntu20.04安装RabbitMQ,并配置远程调用,详细教程

    一 简介 RabbitMQ是一种在Erlang OTP中实现的开源消息队列软件 它实现了AMQP 高级消息队列协议 并使用插件与流行的消息传递解决方案进行通信 如MQTT 消息队列遥测传输 面向文本流的消息传递协议等 在本文中 您将了解如何
  • Linux中Shell脚本命令替换和grep接收变量作为参数

    需求 再服务器上启动Springboot项目上 使用Shell脚本作为启动脚本去执行 然后调用jar包 在本项目 需要从配置文件application properties中去获取端口号 然后根据端口号去获取进程的PID 问题 第一 如果获