BASH:检查 $STRING 的命令输出,如果存在则将输出存储为变量
BASH: Check output of command for $STRING, if exists then store output as variable
背景:
我正在开发一些 OBDII 软件,我正在尝试通过蓝牙自动执行连接过程。我有一个工作脚本,但我想进一步自动化它,以便它可以在所有 *nix 机器上工作,而不仅仅是我的(现在蓝牙设备的 MAC 手动存储在脚本中)。
我的问题:
此命令的输出是...
$ hcitool scan
Scanning ...
00:18:56:68:AE:08 OBDII
我需要一种简单的方法将其通过管道传输到 grep(或任何有效的方法)中并检查字符串 "OBDII" 的输出。如果它看到它,那么它采用同一行,将结果 MAC 复制到一个变量中,同时去除所有空格和末尾的 OBDII 标识符,只留下 MAC 进一步向下使用到脚本。
完成此操作的最简单方法是什么?
感谢任何帮助!!
没有理由只在操作成功时才有条件地存储输出——更容易总是存储它,如果您想知道是否匹配则检查它是否为空被发现。
result=$(hcitool scan | awk '/OBDII/ { print }')
if [[ $result ]]; then
echo "Found a value: $result" >&2
else
echo "No result found" >&2
fi
背景:
我正在开发一些 OBDII 软件,我正在尝试通过蓝牙自动执行连接过程。我有一个工作脚本,但我想进一步自动化它,以便它可以在所有 *nix 机器上工作,而不仅仅是我的(现在蓝牙设备的 MAC 手动存储在脚本中)。
我的问题: 此命令的输出是...
$ hcitool scan
Scanning ...
00:18:56:68:AE:08 OBDII
我需要一种简单的方法将其通过管道传输到 grep(或任何有效的方法)中并检查字符串 "OBDII" 的输出。如果它看到它,那么它采用同一行,将结果 MAC 复制到一个变量中,同时去除所有空格和末尾的 OBDII 标识符,只留下 MAC 进一步向下使用到脚本。
完成此操作的最简单方法是什么?
感谢任何帮助!!
没有理由只在操作成功时才有条件地存储输出——更容易总是存储它,如果您想知道是否匹配则检查它是否为空被发现。
result=$(hcitool scan | awk '/OBDII/ { print }')
if [[ $result ]]; then
echo "Found a value: $result" >&2
else
echo "No result found" >&2
fi