RHEL环境编写Bash脚本如何将命令输出保存为变量
实现方案
在Bash中可以通过命令替换语法$()捕获命令的输出并保存为变量,调整后的脚本如下:
#!/bin/bash # 定义规则项名称 CHECK_ITEM="4.2.2 Ensure logging is configured (Not Scored)" # 捕获sudo cat /etc/rsyslog.conf的输出存入变量 RSYSLOG_CONF_RESULT=$(sudo cat /etc/rsyslog.conf) # 输出提示信息 echo " ### ${CHECK_ITEM} : ### " echo " " echo "Running command: " echo "# sudo cat /etc/rsyslog.conf" echo " " # 输出捕获的命令结果,和原有直接执行命令的展示效果一致 echo "${RSYSLOG_CONF_RESULT}" # 后续你可以直接调用变量$RSYSLOG_CONF_RESULT做进一步的判断、写入报告等操作
注意说明
- 引用保存了命令输出的变量时,一定要用双引号包裹(如
"${RSYSLOG_CONF_RESULT}"),否则会丢失原始输出的换行、连续空格等格式。 - 如果执行
sudo cat时需要输入密码,脚本会卡住无法自动执行,建议提前给执行脚本的用户配置该命令的免密sudo权限,或者直接用root身份运行脚本,同时可以去掉命令前的sudo前缀。
内容的提问来源于stack exchange,提问作者user14135159
相关产品推荐
相关产品推荐

