相关疑难解决方法(0)

如何在Bash中将变量设置为命令的输出?

我有一个非常简单的脚本,如下所示:

#!/bin/bash

VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'

echo $MOREF
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行此脚本并将参数传递给它时,我没有得到任何输出.但是,当我运行$MOREF变量中包含的命令时,我能够获得输出.

我想知道如何获取需要在脚本中运行的命令的结果,将其保存到变量,然后在屏幕上输出该变量?

bash shell command-line

1513
推荐指数
14
解决办法
170万
查看次数

如何在Makefile目标中使用Bash语法?

我经常发现Bash语法非常有用,例如像diff <(sort file1) <(sort file2).中的进程替换.

是否可以在Makefile中使用此类Bash命令?我在考虑这样的事情:

file-differences:
    diff <(sort file1) <(sort file2) > $@
Run Code Online (Sandbox Code Playgroud)

在我的GNU Make 3.80中,这会产生错误,因为它使用shell而不是bash执行命令.

bash shell makefile

194
推荐指数
3
解决办法
11万
查看次数

在 Makefile 中使用 bash 变量

我想在我的 makefile 中使用 bash 计时变量,例如在我的终端中我可以这样做并且它可以工作

 MY_TIME=$SECONDS 
 echo $MY_TIME
Run Code Online (Sandbox Code Playgroud)

但是当我在我的 makefile 上写这个时它不起作用

如何在我的 make 文件中使用这两行?

这就是我正在做的

.PHONY: myProg
myProg:
      MY_TIME=$SECONDS 
      echo $MY_TIME
Run Code Online (Sandbox Code Playgroud)

在 Etan Reisner 的回答之后

这就是我现在所拥有的

.PHONY: myProg
 myProg:
        MY_TIME= date; echo $MY_TIME
Run Code Online (Sandbox Code Playgroud)

但是我的 echo 的结果是一个空行,它看起来不像是在存储日期

bash makefile timing environment-variables

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

命令替换不适用于 makefile 中的 echo

这是一个在我的 bash shell 中运行良好的简单命令:

echo "Created at: $(date)" >> README.md
Run Code Online (Sandbox Code Playgroud)

它附加Created at: Wed Jan 24 10:04:48 STD 2018到 README.md。

但是,当我在 makefile 中包含相同的命令时,行为有所不同。

生成文件:

README.md:
    echo "Created at: $(date)" >> README.md
Run Code Online (Sandbox Code Playgroud)

运行时make README.md会将命令替换视为空字符串,如下所示:

echo "Created at: " >> README.md
Run Code Online (Sandbox Code Playgroud)

README.md 中附加的内容是Created at:.

如何在 makefile 中使用 echo 正确地进行命令替换输出?

bash shell scripting makefile gnu-make

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