首页 > 系统相关 >Shell的一些零碎知识,包含jq

Shell的一些零碎知识,包含jq

时间:2023-09-19 09:55:43浏览次数:41  
标签:Shell 变量 jq 零碎 echo start result 使用

Hello World

shell中拼接两个变量的方法

#1
var1="Hello"
var2="World"
result="${var1}${var2}"
echo $result

#2
var1="Hello"
var2="World"
result="$var1$var2"
echo $result

#3
var1="Hello"
var2="World"
result=$var1$var2
echo $result

#4
var1="Hello"
var2="World"
result=$var1+$var2
echo $result

Bash Debugger(bashdb)是一个常用的Bash脚本调试器,你可以通过以下步骤来下载和安装它:

gdb --version
sudo apt-get install gdb
tar -xzf bashdb-<version>.tar.gz
cd bashdb-<version>

./configure
make
sudo make install

假设有一个名为script.sh的Bash脚本,内容如下:

#!/bin/bash

echo "Hello, World!"

name="John"
age=30

echo "Name: $name"
echo "Age: $age"

bashdb script.sh

这将启动Bash Debugger,并在调试会话中逐步执行脚本。你可以使用调试命令(如next、step、print等)来逐步执行脚本、查看变量的值等。
请注意,Bash Debugger(bashdb)是一个功能强大的工具,具有丰富的调试功能。你可以查阅官方文档和参考资料来了解更多关于Bash Debugger的使用方法和调试命令.

要使用jq获取JSON路径中列表中符合条件的某个值,你可以使用select()函数结合条件表达式来筛选列表中的元素,并使用.操作符来访问特定的字段。以下是一个示例:

{
  "users": [
    {
      "name": "John",
      "age": 30
    },
    {
      "name": "Alice",
      "age": 25
    },
    {
      "name": "Bob",
      "age": 35
    }
  ]
}

要获取users列表中name为"Bob"的用户的age值,你可以使用以下命令

jq '.users[] | select(.name == "Bob") | .age' data.json
#35

jq '.users[] | select(.age > 30) | .name' data.json
#"Bob"

在shell中解析json的工具例如jq,如果读取一个json-path的值

{
  "name": "John",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "New York"
  }
}
jq '.address.city' data.json
#"New York"

#你还可以使用-r选项来移除输出中的引号:
jq -r '.address.city' data.json
#New York

在Shell中,管道命令 | 是一种用于将一个命令的输出作为另一个命令的输入的机制。
通过使用管道,你可以将多个命令连接在一起,实现数据的流式处理。
管道命令的语法如下:
command1 | command2

要使用curl和jq结合起来读取curl请求的响应体中的JSON路径,你可以使用管道(|)将两个命令连接起来。
以下是一个示例:

#curl命令用于发送HTTP请求并获取响应体,-s选项用于静默模式,以便只输出响应体而不显示其他信息。
# 然后,通过管道将curl的输出传递给jq命令,使用.path.to.json来指定你想要提取的JSON路径。
curl -s "https://api.example.com/endpoint" | jq '.path.to.json'

当使用 $(command) 语法时,Shell 会执行 command 命令,并将其输出作为字符串返回。

以下是一个更详细的示例,展示了 $(command) 语法的使用:

#!/bin/bash

# 定义一个函数,用于生成一个字符串
function generate_string() {
    echo "Hello, world!"
}

# 使用 $(command) 语法将生成的字符串赋值给变量
result=$(generate_string)

# 输出变量的值
echo $result

在这个示例中,我们定义了一个名为 generate_string 的函数,该函数会输出一个字符串 "Hello, world!"。

接下来,我们使用 $(generate_string) 语法执行 generate_string 函数,并将其输出作为字符串返回。
然后,我们将返回的字符串赋值给变量 result

最后,我们使用 echo 命令输出变量 result 的值,即 "Hello, world!"。




在 Shell 中,你可以使用 for 循环中的 in 关键字和 range 函数来使用变量定义范围。

以下是一个示例,展示了如何在 for 循环的 in 关键字中使用 range 函数和变量定义范围:

#!/bin/bash

# 变量定义范围
start=1
end=10

# 使用变量定义范围的 for 循环
for i in $(seq $start $end); do
    echo $i
done

在这个示例中,我们使用了两个变量 `start` 和 `end`,分别表示循环的开始值和结束值。
通过使用 `$(seq $start $end)`,我们将 `range` 函数和变量 `start` 和 `end` 结合起来,生成了一个由开始值到结束值的范围。

在 Shell 中,`$(command)` 语法用于在命令替换中执行命令并将其输出作为字符串返回。
在这个例子中,`$(seq $start $end)` 执行了 `seq $start $end` 命令,并将其输出作为字符串返回。
`seq` 命令用于生成一个从 `$start` 到 `$end` 的序列。
所以使用 `$(seq $start $end)` 可以正确地生成从 `$start` 到 `$end` 的序列并在 `for` 循环中使用。


在 Shell 中,你可以使用 for 循环来遍历一系列值,包括使用内部变量来控制循环的起始值和步长。
以下是一个示例,展示了如何使用内部变量控制 for 循环的起始值和步长:

#!/bin/bash

# 设置起始值和步长的内部变量
start=1
step=2

# 使用内部变量控制 for 循环
for (( i=start; i<=10; i+=step )); do
    echo $i
done

在这个示例中,我们使用了两个内部变量 startstep,分别表示循环的起始值和步长。

标签:Shell,变量,jq,零碎,echo,start,result,使用
From: https://www.cnblogs.com/tekikesyo/p/17713819.html

相关文章

  • Shell脚本笔记
    1.列出当前目录下所有文件夹名称#!/bin/bash#通过pwd命令获取当前路径并存入pwddir变量pwddir=`pwd`#ls-l列出pwddir下所有文件信息即数据,再通过grep利用正则表达式匹配每行以d开头的数据,最后使用awk输出每行的最后一列作为一个数组,for循环对数组进行遍历输出foriin`ls-l......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • Shell多个命令间隔符号;、&、&&、| 和 || 区别
    1、&command1&command2&command3#三个命令同时执行用&连接的多个符号将同时执行,不管命令是否执行成功单个的与符号通常可以发现在一个bash命令的行尾:sleep2&echomi 其作用是令该命令转到后台执行。对于这样的命令,系统会创建一个sub-shell来运行这个......
  • Shell环境变量全攻略:让你的编程工作更加高效
    在Linux和Unix系统中,环境变量是存储系统配置信息的重要机制。它们被设计为影响所有进程和用户,而不仅仅是单个用户。环境变量可以被视为一种在shell会话中共享的全局变量。什么是环境变量?环境变量是一种在操作系统中用来存储系统配置信息的机制。这些信息包括文件路径、系统设置、用......
  • 通过jq读取和修改json数据
    我接到了这么一个任务,页面就是非常简单的页面,不需要搭建好的后台,也没什么数据库,在这个条件下,点击“预约”按钮,可以保存点击用户的数量。要求很明确,要保存,不能刷新或者第二天数量就变了,所以是一定要有文件保存这数据的。我的参考了网上大部分的内容,发现单纯通过JavaScript是不能......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......