【问题标题】:Output not displaying after echo回显后不显示输出
【发布时间】:2019-11-24 04:13:10
【问题描述】:

我正在尝试根据某个命令的结果来格式化我的输出。但是,它没有打印出来。你们能告诉我我错过了什么吗?

VID=$(grep -iE $vvwwn ${TPAR_TEMP}/vvid_${TPAR_NAME} > ${TPAR_TEMP}/tvvid 2> /dev/null)

    TVVID=$(cat ${TPAR_TEMP}/tvvid |awk '{print$3}' 2> /dev/null)

            if [ "${TVVID}" = "32" ]; then
                            sh templ1
                            echo "$VID"
                   else
                            sh templ2 
                            echo "$VID"     
            fi

templ1是

#!/bin/bash

echo "========================================================================================================"
awk '
BEGIN {printf "%-27s %-6s %-32s %-8s %-8s %-9s %-4s\n" , "Name", "State", "VV_WWN", "VSize_MB", "Usr_Used_MB", "UsrCPG", "Prov"}'
echo "========================================================================================================"

【问题讨论】:

  • VID 是空的,因为您将grep 的输出发送到文件中,而不是让命令替换分配给变量 - 正如 Orion 在另一条评论中所说。如果两者都需要,您可以使用tee。
  • @DennisWilliamson, VID 不为空。当我测试并回应它之后,我确信这一点。但这一切都很好。能够弄清楚。谢谢
  • 那么,解决方案是什么?使用您显示的代码,VID 不可能有任何内容。

标签: bash shell unix scripting


【解决方案1】:

问题是$VID 是空的,由于命令grep -iE $vvwwn ${TPAR_TEMP}/vvid_${TPAR_NAME} > ${TPAR_TEMP}/tvvid 中的重定向,为了使问题更容易填写变量并在终端中运行命令。

【讨论】:

  • 我尝试删除 2> 重定向,但仍然没有输出。我确实手动运行并填充了变量,它确实有效,但实际的脚本仍然无法正常工作。 :(
  • 问题在于重定向到文件${TPAR_TEMP}/vvid_${TPAR_NAME} > ${TPAR_TEMP}/tvvid
  • 我认为问题不在于那部分。它是我也重定向到文件的 for 循环的一部分。这也有效。
猜你喜欢
  • 2013-08-14
  • 2021-07-06
  • 2021-11-10
  • 2021-05-21
  • 2022-10-24
  • 2020-03-16
  • 2014-04-30
  • 2019-09-19
  • 2021-02-03
相关资源
最近更新 更多