我有一个简单的单线,在终端中完美运行:
history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
Run Code Online (Sandbox Code Playgroud)
它的作用:给出用户最近最常用的 10 个命令。(不要问我为什么要实现这样的事情)
我启动一个编辑器并#!/bin/bash在开头输入相同的 a :
#!/bin/bash
history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
Run Code Online (Sandbox Code Playgroud)
并说我将其另存为script.sh. 然后,当我转到同一个终端时,输入bash script.sh并点击Enter,没有任何反应。
到目前为止我尝试过的:谷歌搜索。许多人有类似的痛苦,但他们通过sudo su添加或删除空格来解决。这些都不适合我。知道我可能哪里出错了吗?
编辑:
我想从终端本身做到这一点。运行此脚本的系统可能会或可能不会提供更改主文件夹中文件的权限。
BryceAtNetwork23 提出的另一个问题history,阻止我们执行它的命令有什么特别之处?
要显示我正在使用的当前目录$pwd,它在 Cygwin 中运行良好。
本文档解释了如何将 cygwin 目录转换为 windows 格式。但为什么$cygpath -w pwd和$cygpath -w $pwd不起作用?
这就是我在这种情况下得到的:
我有bash脚本,我问用户一些输入,然后我想调用一个C程序几次,并总结返回值.请注意我的C程序中的main函数printf也有一些语句,它返回一个整数值.这是我的bash脚本的一部分:
#!/bin/bash
encBER=0
// Some other code where I read the values from the user
for i in $frames;
do
tempEncBER=$(./enc_ber $bytes $snr $modulation $channel $alamouti)
encBER=$((encBER + tempEncBER))
done
echo "Total BER is:" $encBER
Run Code Online (Sandbox Code Playgroud)
关键是我要求它执行10次,这意味着frames变量的值为10,但它执行一次,它显示一些语法错误,然后再次执行,对于最终结果,值为encBER0.根本不存储任何东西.如何在我的C程序中的main函数中获取return语句的值并在bash中使用它?
我正在使用一个名为 ImageMagick 的软件,它有命令行输入来进行照片比较并输出一个值。我想将该输出值保存到特定变量以供进一步分析。我该怎么做?这是我将在命令行中运行的命令:
compare -metric MSE Picture1.jpg Picture2.jpg difference.png
Run Code Online (Sandbox Code Playgroud)
这将比较图片 1 和图片 2 之间的像素差异。将其保存为差异并输出差异的数量。如果相同,它将为 0。我希望能够根据变量捕获该值。
我想将 shell 命令的输出分配给一个变量。
如果我直接回显命令,代码将正确执行:
for ((i=0; i<${#result[@]}; i++)); do
echo ${result[$i]} | awk '{print $1}'
done
Run Code Online (Sandbox Code Playgroud)
但是,如果我将它分配给一个变量,
size=`${result[$i]} | awk '{print $1}'`
echo $size
Run Code Online (Sandbox Code Playgroud)
或者
size=$(${result[$i]} | awk '{print $1}')
echo $size
Run Code Online (Sandbox Code Playgroud)
他们不工作。
我该如何解决?
这应该很容易,但由于某种原因,它不是:
尝试运行一个简单的curl命令,获取它的输出,然后用它做一些事情.
cmd='curl -v -H "A: B" http://stackoverflow.com'
result=`$cmd | grep "A:"`
...
Run Code Online (Sandbox Code Playgroud)
问题 - 标题"A:B"未发送.
执行curl命令似乎忽略了header参数,并运行curl两次 - 第二次以"B"作为主机(显然失败).
任何的想法?
我试图VARI在同一行中打印后跟逗号的值,这样我就可以拥有这些值的csv文件,但我无法保存值
VARI = 'cat filename | head -1 | cut -d, -f${i}'
i=0
while (( i<130)) ;
do
if [[ $i -eq 1 || $i -eq 9 || $i -eq 12 || $i -eq 23 || $i -eq 25 || $i -eq 29 ]]
then
VARI = 'cat filename | head -1 | cut -d, -f${i}'
echo "$VARI ,"
fi
let i=$i+1;
done
Run Code Online (Sandbox Code Playgroud)
输出预期是
4,abc,5,8,xyz,9
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)
如何将返回的结果存储到变量中?
我最近发现了一篇关于如何从 GitHub 中的组织克隆所有存储库的帖子。最佳答案如下:
gh repo list myorgname --limit 4000 | while read -r repo _; do
gh repo clone "$repo" "$repo"
done
Run Code Online (Sandbox Code Playgroud)
我理解下划线之前和之后的所有内容。是什么意思 _; 在上面的命令中?
谢谢!