linux - 如何从 bash shell 获取输出

标签 linux bash shell variables

<分区>

Possible Duplicate:
bash - automatically capture output of last executed command into a variable

例如

在 Bash shell 中

user:/ & echo "Hello"
Hello
user:/ & date
Sat Mar 17 01:48:45 ICT 2012

如何获取“Hello”或“Sat Mar 17 01:48:45 ICT 2012”变量

我的意思是命令 bash shell 的每个输出

这一点的目的,我想得到那些变量,并用它做一些事情。

比如,当 echo Hello 时,我想将字符串反转为 olleH,然后打印出来。

像这样

echo "Hello"
olleH

更多信息

在命令行界面中 ***不在 Shell 脚本中

当我在命令行界面中键入命令 echo、date(或任何命令)时,输出将显示在下一行中。

user:/ & echo "Hello" <br>
Hello 

“Hello”变量是 bash shell 的输出。所以,我想将输出 Hello 存储到变量中并传递到“Dictionary Script”

Hello会根据Dictionary Script进行匹配和翻译

Hello = Hi (Just example)

现在Hello翻译成Hi,送回shell打印出来

结果

user:/ & echo "Hello" <br>
Hi 

如何获取输出?

我可以公开 Bash Shell 源代码、编辑并重新编译吗?

我可以从 /proc/BASHPID 中获取吗?

最佳答案

尝试回答编辑过的问题

从您的编辑来看,听起来好像您想让 bash 执行命令,但是 bash 的输出应该传递给“transmogrifier”,它会根据您的想法更改输出。

这不是微不足道的;我不确定它能否用于超过几秒钟的乐趣。

在一个层面上,您需要一个交互式 shell,其标准输出(可能还有标准错误)将转到您的修改器程序:

bash -i 2>&1 | transmogrifier

对于基本的命令行工作,这几乎可以使用,尽管行编辑(即使只有退格键)会有点问题。如果 transmogrifier 正在改变您在键入时看起来正在键入的内容,则命令行编辑变得无法忍受。 (我尝试了 bash -i 2>&1 | tee,效果出奇的好,但是 tee 只是将它的输入复制到它的输出;我不确定我为什么选择tee 而不是 cat。不过,一个中断会终止管道;这是您不得不担心的另一件事。)

尝试回答未经编辑的问题

对于Hello,你最好使用:

var1="Hello"

您还可以使用:

var1=$(echo "Hello")

对于日期,您或多或少必须使用后一种表示法:

var2=$(date)

您现在可以使用这些变量做一些事情,例如:

$ echo "$var1" | rev
olleH
$

请注意,简单的提示符,例如“$”(对于 Bash 及其亲属)或“%”(对于 C shell 及其亲属)或“#'(对于 root)是常规的。


我决定不提反引号的使用,但自从 mgilson评论它们时,它们确实存在,您可能会在较旧的脚本中遇到它们,您不应该在自己的脚本中编写它们。

用于命令替换的 $(...) 表示法在嵌套场景中更简单,例如:

cd $(dirname $(dirname $(which gcc)))/lib

与相同操作的反引号符号相比:

cd `dirname \'dirname \\\`which gcc\\\`\``/lib

(甚至不要考虑将第二行放入 MarkDown 以征求意见!这就是我将其添加到答案中的原因。)

关于linux - 如何从 bash shell 获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743128/

相关文章:

linux - mv 'x' 和 'y' 是同一个文件

linux - 无法在 .bash_profile 中设置路径和来源

linux - tty 终端中的 Vim 颜色

c++ - 跨内核和用户空间的 Linux 时序

bash - 删除所有行,从/pattern/之后的两行开始

bash - 使用 Imagemagick 切掉图像的 4 个边

shell - 如何使用 shell 脚本从文件中获取变量的值?

linux - 如何查找导入的 pgp key 的到期日期

Bash - 将 stdout 重定向到日志和屏幕,仅使用 stderr 进行日志记录

regex - sed regex命令输出以html结尾的行?