我不知道如何通过 bash 将命令的输出保存到变量中:
PID = 'ps -ef | grep -v color=auto | grep raspivid | awk '{print $2}''
Run Code Online (Sandbox Code Playgroud)
我是否必须为撇号或管道使用特殊字符?
谢谢!
"$ 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)
如何将返回的结果存储到变量中?
在 a 中makefile,我试图检查 fileA 的修改时间是否比 fileB 更新的时间长。使用之前的一些帖子(this和this)作为参考,我想出了这个来尝试将自上次文件修改以来的时间存储为变量:
(我宁愿这是在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也没有像这样工作。
对于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脚本将其放置到文件中。
我在〜/ 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
在 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 包含结果?
我使用下面的命令来查找名为“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)
但是,两次我都收到相同的错误“日志文件:找不到命令”。难道我做错了什么?任何帮助表示赞赏。
我想将以下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脚本:
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=50和X=200.由于某些未知原因,它不起作用X=400.知道为什么吗?该脚本永远不会等待2分钟,它会继续提交作业.
我需要获取当前机器的内存大小和当前机器使用的内存(以 GB 为单位)。我该怎么做呢?我可以得到以 kB 为单位的内存大小,但是如何以 GB 为单位呢?
RAM = $(grep MemTotal /proc/meminfo)
Run Code Online (Sandbox Code Playgroud)
我需要一个包含总内存的变量和一个包含已用内存的变量。我对这个问题感到抱歉,但我现在正在生命中第一次编辑 bash 脚本 ^^ 感谢您的所有帮助!;)
bash ×9
shell ×5
linux ×3
terminal ×2
jq ×1
macos ×1
makefile ×1
sed ×1
ubuntu-14.04 ×1
ubuntu-16.04 ×1