相关疑难解决方法(0)

使用管道和撇号时如何将 bash 命令的输出捕获到变量中?

我不知道如何通过 bash 将命令的输出保存到变量中:

PID = 'ps -ef | grep -v color=auto | grep raspivid | awk '{print $2}''
Run Code Online (Sandbox Code Playgroud)

我是否必须为撇号或管道使用特殊字符?

谢谢!

linux bash ubuntu-14.04

2
推荐指数
1
解决办法
8301
查看次数

在Shell脚本中将值存储到变量

"$ emails"包含值数组,我想从中解析值,为此,我使用的是jq.如果我做以下命令

echo "$emails" | ./jq '.total_rows'
Run Code Online (Sandbox Code Playgroud)

我可以得到值,即4,我想将返回的结果存储到一些变量,

total_rows="$emails" | ./jq '.total_rows'
Run Code Online (Sandbox Code Playgroud)

但是total_rows没有价值.

echo $total_rows
Run Code Online (Sandbox Code Playgroud)

如何将返回的结果存储到变量中?

bash shell jq

2
推荐指数
1
解决办法
2万
查看次数

在 makefile 中调用 bash 命令

在 a 中makefile,我试图检查 fileA 的修改时间是否比 fileB 更新的时间长。使用之前的一些帖子(thisthis)作为参考,我想出了这个来尝试将自上次文件修改以来的时间存储为变量:

(我宁愿这是在make配方之外的函数中,但一次一个。)

    .PHONY: all clean

    all      : (stuff happens here)

    radio    :
              BASE_MOD_TIME="$( expr $(date +%s) - $(date +%s -r src/radio_interface/profile_init.c) )"
              @echo "$(BASE_MOD_TIME)"
Run Code Online (Sandbox Code Playgroud)

我以为我会将expr命令的输出分配给一个变量BASE_MOD_TIME,但输出是:

    bash-4.1$
    BASE_MOD_TIME=""
    echo ""
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?保存输出的简单尝试ls -l也没有像这样工作。

bash makefile

2
推荐指数
1
解决办法
2万
查看次数

将sha256sum的结果读入bash变量

对于sha256sum的以下执行和结果

~/HydroGuardFW/hw_1_5/Debug$ sha256sum debug_2.0.5.hex
34c977f0df3e90f9a4b36da3cd39fdccf3cd1123c563894b3a3378770a19fc6d      debug_2.0.5.hex
Run Code Online (Sandbox Code Playgroud)

输出将分为两部分,即sha256和计算出sha256总和的文件名的回显。如何将输出的第一部分(即sha256)捕获到变量中,以便可以使用bash脚本将其放置到文件中。

bash

2
推荐指数
1
解决办法
2501
查看次数

通过外壳脚本拒绝对猫的权限

我在〜/ bin / rclone_sync_ACD.log中的日志文件的shell脚本中运行cat时遇到问题。这是shell脚本中的这一行:

RESULT=cat $LOGFILE | tail -1
Run Code Online (Sandbox Code Playgroud)

但是当运行脚本时,我得到:

./rclone_sync: line 63: /Users/pjburnhill/bin/rclone_sync_ACD.log: Permission denied
Run Code Online (Sandbox Code Playgroud)

在终端中,如果输入cat $LOGFILE | tail -1,它将提供正确的输出。

脚本需要具有什么权限才能访问并打印正确的行?

谢谢,PJ

macos bash shell terminal permission-denied

1
推荐指数
1
解决办法
1720
查看次数

将 bash 字符串操作的输出分配给变量

在 Ubuntu 16.04 上,我有一个以 root 身份运行的 bash 脚本。我想从用户的输入中删除所有空格,并将修剪后的字符串分配给一个变量。

read -p "Enter username: " USERNAME
echo "$USERNAME" | sed s/' '/''/g
TRIM="$USERNAME" | sed s/' '/''/g
echo $TRIM
echo "Done"
Run Code Online (Sandbox Code Playgroud)

这是一些示例输入和输出:

输入用户名:hjkl
hjkl

完毕

$TRIM 为空。
我需要做哪些更改才能让 $TRIM 包含结果?

bash sed ubuntu-16.04

1
推荐指数
1
解决办法
987
查看次数

将 ls 命令的输出存储在 shell 变量中

我使用下面的命令来查找名为“candump”的最新文件

ls *.log | grep "candump" | tail -n 1
Run Code Online (Sandbox Code Playgroud)

输出为“candump-2018-04-19_131908.log”

我想将输出文件名存储到 shell 脚本中的变量中。我正在使用以下命令:

logfile = `ls *.log | grep "candump" | tail -n 1`
Run Code Online (Sandbox Code Playgroud)

logfile = $(ls *.log | grep "candump" | tail -n 1)
Run Code Online (Sandbox Code Playgroud)

但是,两次我都收到相同的错误“日志文件:找不到命令”。难道我做错了什么?任何帮助表示赞赏。

linux shell command-substitution

1
推荐指数
1
解决办法
2万
查看次数

如何将命令输出的第一行设置为bash中的变量

我想将以下dig命令输出的第一行设置为变量:

root@kali:~# dig +short stackoverflow.com 
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69
Run Code Online (Sandbox Code Playgroud)

所以它输出了很多IP地址,但我只想要第一个,可以通过以下方式sed完成:head

root@kali:~# dig +short stackoverflow.com | sed -n 1p
151.101.193.69
Run Code Online (Sandbox Code Playgroud)

问题:

当我将其设置为变量时,它会为我提供所有 IP 地址:

root@kali:~# cmd='dig +short stackoverflow.com | sed -n 1p'
root@kali:~# $cmd
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69
Run Code Online (Sandbox Code Playgroud)

bash

1
推荐指数
1
解决办法
3314
查看次数

Bash函数不能返回大数

我写了以下bash脚本:

function getqsubnumber {
# Return how many simulations ($qsubnumber) are currently running

qsubnumber=`qstat | grep p00 | wc -l`

return $qsubnumber
}


getqsubnumber
qs=$?

if [ $qs -le $X ]
    then
        echo 'Running one more simulation'
        $cmd # submit one more job to the cluster
else
    echo 'Too many simulations running ... Sleeping for 2 min'
    sleep 120
Run Code Online (Sandbox Code Playgroud)

我的想法是我在集群上提交工作.如果有多个X作业同时运行,我想等待2分钟.

该代码适用于X=50X=200.由于某些未知原因,它不起作用X=400.知道为什么吗?该脚本永远不会等待2分钟,它会继续提交作业.

linux bash shell terminal cluster-computing

0
推荐指数
1
解决办法
405
查看次数

如何在bash脚本中获取内存大小(以GB为单位)?

我需要获取当前机器的内存大小和当前机器使用的内存(以 GB 为单位)。我该怎么做呢?我可以得到以 kB 为单位的内存大小,但是如何以 GB 为单位呢?

RAM = $(grep MemTotal /proc/meminfo)
Run Code Online (Sandbox Code Playgroud)

我需要一个包含总内存的变量和一个包含已用内存的变量。我对这个问题感到抱歉,但我现在正在生命中第一次编辑 bash 脚本 ^^ 感谢您的所有帮助!;)

bash shell

0
推荐指数
1
解决办法
4057
查看次数