【总结】shell 脚本命令执行结果赋值给变量无效

2023-05-16

背景

想要写一个脚本,从某台服务器上抓取某个服务的进程信息。
将某个命令执行结果保存到变量中。

问题现象:使用反引号方式获取不到值

这个问题很怪异,我上次按照同样的方式,获取别的服务进程信息,是可以的。
这次在另一台机器,换另一个进程,就不行。

PROCCESS_INFO=`ps -ef | grep 'XxxServer' | grep 'java'| awk '{print $11}'`
echo $PROCESS_INFO

解决方法

解决方法:反引号前后增加空格,再次执行脚本,就可以正常输出了。

PROCCESS_INFO=` ps -ef | grep 'XxxServer' | grep 'java'| awk '{print $11}' `
echo $PROCESS_INFO

扩展:反引号``和 $()的使用区别

Linux 系统重,还有另一种方式$()可以将命令执行结果赋值给变量。

PROCCESS_INFO=$(ps -ef | grep 'XxxServer' | grep 'java'| awk '{print $11}')
echo $PROCESS_INFO

反引号和$()的两种方式是等价的,但又有不同点,下面介绍其区别。

两种方式异同点:

  1. 两种方式的效果是等价的;
  2. 反引号容易和单引号混淆;
  3. $() 方式支持嵌套使用,反引号不行;
  4. 绝大多数shell 都支持反引号方式,有些shell 不一定支持$()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【总结】shell 脚本命令执行结果赋值给变量无效 的相关文章

  • 相当于 Python 中的 set -o pipelinefail 吗?

    我有一些 Python 脚本 每个脚本都大量使用排序 uniq ing 计数 gzipping 和gunzipping 以及 awking 第一次运行我使用的代码subprocess call 是的 我知道安全风险 这就是为什么我说这是第一
  • 如何在shell脚本中读取单个字符

    我想要类似的选项getche 如何从命令行读取单个字符输入 Using read命令我们可以做到吗 在巴什中 read可以做到 read n1 ans
  • Perforce:从命令行“从工作区中删除”?

    The p4v Perforce GUI 客户端 http www perforce com perforce products p4v html具有 操作 gt 从工作空间中删除 菜单命令 该命令可从工作空间中删除受版本控制且未打开进行编
  • 在多个文件中进行查找/替换的最佳方法?

    最好的方法是什么 我不是命令行战士 但我想可能有一种使用方法grep and cat 我只想替换文件夹和子文件夹中出现的字符串 最好的方法是什么 如果这很重要的话 我正在运行 ubuntu 我将为使用的人提供另一个例子ag 银色搜索者 ht
  • 使用 find 和 xargs 交互删除文件

    我正在尝试将一些文件从 find 命令传输到交互式删除命令 以便我可以仔细检查要删除的文件 但我遇到了一些麻烦 find name print0 xargs 0 rm i 我认为上面的方法可行 但我只得到一串 rm remove regul
  • PHP 中是否有相当于 subprocess 的东西?

    在 Java 和 Python 中 你有ProcessBuilder or 子流程 https docs python org 2 library subprocess html可让您使用未转义字符串轻松启动进程的模块 例如 ls some
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • system 和 shell_exec 之间的区别

    有什么区别shell exec and systemPHP 中的方法 两者都采用单个命令行参数并在 PHP 中运行 使用其中一种比另一种更好吗 请参阅此处的解释 http chipmunkninja com Program Executio
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 关键字“if”如何测试一个值是真还是假?

    在 bash 脚本中 if 1 then echo Yes else echo No fi Output Yes 它表示 1 被视为真值 但在代码中 word Linux letter nuxi if echo word grep q le
  • Bash:递归复制命名文件,保留文件夹结构

    我希望 cp R src prog js images icon jpg tmp package 将在目标目录中产生对称结构 tmp package src prog js images icon jpg 但相反 这两个文件都被复制到 tm
  • 如何正确使用fork、exec、wait

    我正在编写的 shell 需要执行用户提供给它的程序 这是我的程序的非常简短的简化版本 int main pid t pid getpid this is the parents pid char user input NULL size
  • 测试 bash shell 脚本[重复]

    这个问题在这里已经有答案了 有人可以解释一下如何测试 bash shell 脚本吗 例如 我有一个 sh 文件 其中包含此代码 bin sh for file in txt do mv file basename file txt doc
  • UNIX 中 $@ 和 $* 有什么区别?

    有什么区别 and 在UNIX 中 当在脚本中回显时 它们似乎都会产生相同的输出 请参阅特殊参数下的 bash 手册页 Special Parameters The shell treats several parameters speci
  • 如何在shell脚本中给出密码?

    在 shell 脚本文件中 我使用一些命令 例如scp and make install要求我输入密码 我运行一个 shell 脚本来编译一个大项目 一段时间后它会要求我输入密码才能使用scp 我需要等待该过程并在此之后提供密码 我只想通过
  • 在 scp 的简单函数包装中使用波形符 ~ 时出现问题

    我想放置一个简单的bash功能在我的 bashrc围绕着scp通过接受 源 参数和 目标 参数来命令 到目前为止已经尝试过 function send eval scp 1 user annoyingly long server name
  • Bash 循环遍历具有行和列的变量

    经过几个小时的搜索测试不同的解决方案后 我尚未找到可行的解决方案 Bash 和 Shell 脚本不是我的强项 我有一个变量 其中有行 换行 和列 制表符分隔 我想要做的是循环遍历行并获取 Column X 然后将该项目放入变量中 以便我可以

随机推荐