我正在创建一个bash脚本来获取cpu%,pps &传入kbps。
#!/bin/bash
INTERVAL="0.5" # update interval in seconds
IFS="enp0s3"
while true
do
# Read /proc/stat file (for first datapoint)
read cpu user nice system idle iowait irq softirq steal guest< /proc/stat
# c
由于IFS变量的默认值是换行符/制表符/空格,下面的代码如下:
while read -r line
do
echo $line
done <<< "hello\nworld"
产出:
hello
world
但是,如果我正确理解它,我可以修改它,以便它将它分开,例如逗号。
所以这个代码:
while IFS=',' read -r part
do
echo $part
done <<< "hello,world"
但这个只是输出:
hello,world
我希望它能和以前的剧本一样打印出来。
我正在尝试编写一个shell脚本,它遍历JSON文件并根据每个对象的属性执行一些逻辑。该脚本最初是为Windows编写的,但它在MacOS上不能正常工作。
初始代码如下所示
documentsJson=""
jsonStrings=$(cat "$file" | jq -c '.[]')
while IFS= read -r document; do
# Get the properties from the docment (json string)
currentKe
我当前正在尝试获取有关我的文件托管帐户的信息。因为我在不同的账户上保存了很多备份介质。我使用megatools来查询有关帐户的信息,然后将这些信息解析成一个数组。然后使用\n作为原始输入来展平该数组。
这个脚本运行得很好,但是它不能创建有效的json。我不确定我遗漏了什么才能使它有效。提前感谢您的帮助。
脚本
function join_by { local IFS="$1"; shift; echo "$*"; }
while IFS='' read -r line || [[ -n "$line" ]]; do
IF
我在一个bash文件中运行这个命令,将数据发送到url并获得响应。
curl -s -X POST $url -d "username=username"
它输出响应体。很好,但是我想自动化这个任务,所以我在一个名为urls.txt的文件中保存了许多URL,如下所示:
https://url1.com
https://url2.com
and so on...
要循环文件中的所有行(Url),我运行以下脚本
while IFS="" read -r p || [ -n "$p" ]
do
curl -s -X POST $p -d
我将line like作为我的脚本的参数
first element,second element,asd,452
我想把它分成数组,以得到
first element
second element
asd
452
并且能够像array1一样访问它们
我如何才能做到这一点?
编辑:
现在我在试着
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
IFS=, read -ra arr <<< $lin
接下来,我尝试使用bash解析来自curl的JSON响应,现在我决定尝试使用jq。我已经检查了文档,但我找不到一种方法来遍历元素并“做”一些事情。
这是我想要实现的一个想法,将jq的结果转换成一个数组,(它不起作用)
__json=$($omd_response | ~/local-workspace/bash/jq -r '[.]')
for x in "${__json[@]}"
do
echo "-metadata" $x
done
任何其他的想法都是非常感谢的。谢谢
我使用jq解析一个JSON文件,将一系列中的每个JSON数组提取到一个shell数组中。
我的当前代码如下所示:
for ((i = 0; i < ${#nvars[@]}; i++)); do
v1=($(cat $INPUT | jq '."config"[i]."var1"[]'))
echo $v1
done
错误信息:
error: i is not defined
我也取代了
v1=($(cat $INPUT | jq '."config"[i]."var1"[]'
我正在尝试使用jq获取一些json数据
{
"meta": {
"title": "This is a title",
"description": "Just a description"
}
}
通过运行jq -r '.meta | .title, .description' ./project.json,给出了预期的结果:
This is a title
Just a description
现在,我需要将内容分配给bash脚本中的一个变量:
r
我有一个脚本,它在/etc/passwd中重新计算一行的UID,但只有当UID >500时才会这样。这是工作但是..。我只想用一个命令重写所有的代码行,但我不知道这是否可行。
让我向你展示我的代码:
#!/bin/bash
while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
if [ $f3 -gt 500 ]
then
echo "$f1:$f2:$f3:$f4:$f5:$f6:$f7" <<< there is a single command for that ?
fi
done <
我使用jq读取JSON对象,并将字段的值附加到另一个文件中,如下所示:
curl $JSON| jq '.body' | tee -a page1.md
这很好用,但是我从curl命令中提取的标记没有在page1.md中格式化。它只是附加,没有考虑到标记样式,如###,这将粗体文本。例如,下面的行正是上面在测试运行期间附加的命令.注意行的开头和结尾处的引号。所有这些都输出到一行中,破坏了最初从卷曲中提取的原始标记格式的完整性。
"###test test test \r\n**test test **\r\n\r\n> test test test test\r\
我有一个包含文本的文件。我逐行读取整个文件并将其附加到一个string对象中。但是当我打印出最终的字符串时,我并没有得到整个文件的内容。我确信这是由于存在特殊字符,如'\n‘、'\r’、'\t‘等。
下面是我的示例代码:
// Read lines until end of file (null) is reached
do
{
line = "";
inputStream->read_line(line);
cout<<"\n "<<line;//here i get the c