小编eme*_*oke的帖子

如何获取指向变量的对话框输入?

我一直在自学 bash 脚本,但遇到了一个问题。我编写了一个脚本来使用“读取”命令从用户那里获取输入,并使该输入成为稍后在脚本中使用的变量。该脚本有效,但是......

我希望能够使用“对话框”进行设置。我发现

'dialog --inputbox' 会将输出定向到 'stderr',为了将该输入作为变量,您必须将其定向到一个文件,然后检索它。我发现解释这一点的代码是:

#!/bin/bash
dialog --inputbox \

"What is your username?" 0 0 2> /tmp/inputbox.tmp.$$

retval=$?

input=`cat /tmp/inputbox.tmp.$$`

rm -f /tmp/inputbox.tmp.$$

case $retval in
0)

echo "Your username is '$input'";;
1)

echo "Cancel pressed.";;

esac
Run Code Online (Sandbox Code Playgroud)

我看到它使用 2> 将 sdterr 发送到 /tmp/inputbox.tmp.$$,但输出文件看起来像“inputbox.tmp.21661”。当我尝试 cat 文件时,它给了我一个错误。所以我仍然无法从 --inputbox 获取用户输入作为变量。

示例脚本:

echo "  What app would you like to remove? "

read dead_app

sudo apt-get remove --purge $dead_app
Run Code Online (Sandbox Code Playgroud)

所以你可以看到它是一个基本的脚本。甚至有可能将变量作为一个词从dialog --inputbox

bash dialog

22
推荐指数
4
解决办法
4万
查看次数

如何过滤grep结果?

我是编写脚本的新手。所以我希望这很简单。我正在编写的脚本用于收集系统信息并将其保存为 html 文件。

当我运行时:

sudo lshw -short
Run Code Online (Sandbox Code Playgroud)

它列出了系统上的所有硬件。

当我运行时:

sudo lshw -short | grep processor
Run Code Online (Sandbox Code Playgroud)

它返回(点代表空格)

/0/4                        ...........................................processor................................................   AMD FX(tm)-6100 Six-Core Processor"
Run Code Online (Sandbox Code Playgroud)

我的问题是如何删除处理器前面的所有内容。或者我如何只显示“处理器”之后的内容。我尝试了 grep 的其他几个选项,并试图找到一个 awk 命令来工作,但我的尝试失败了。

如果需要更多信息,请告诉我。

bash grep awk

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

标签 统计

bash ×2

awk ×1

dialog ×1

grep ×1