Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将HTML标记分配给变量_Html_Bash - Fatal编程技术网

将HTML标记分配给变量

将HTML标记分配给变量,html,bash,Html,Bash,只是一个简单的问题,伙计们。我想在BASH中将html标记分配给一个变量。我该怎么做 还是有更好的方法 这是代码的实际部分: function storage_util_1942 { if [ $SETFLAG_1942 = "YES" ]; then for i in {1..5} do TMPSTOR=$(cat $HCREPORT1942 | grep -A$i DISK | tail -1) RULESET=$(cat $HCREPORT1942 | grep

只是一个简单的问题,伙计们。我想在BASH中将html标记分配给一个变量。我该怎么做

还是有更好的方法

这是代码的实际部分:

function storage_util_1942
{
  if [ $SETFLAG_1942 = "YES" ];
  then

  for i in {1..5}
  do
  TMPSTOR=$(cat $HCREPORT1942 | grep -A$i DISK | tail -1)
  RULESET=$(cat $HCREPORT1942 | grep -A$i DISK | tail -1 | awk '{print $6}' | cut -d'%' -f1)

  if [ $RULESET -gt 90 ]
  then
    STORAGE$i="<font color=\"red\"><b>${TMPSTOR}</b></font>"
  else
    STORAGE$i="<font color=\"green\"><b>${TMPSTOR}</b></font>"
  fi
  done

fi

echo "  <tr align="left">"
echo "    <td><font face="verdana,helvetica" size="1" color="red"><b>Storage Capacity <font color="green">[Must be less than 90%]</b></font></td>"
echo "  </tr>"
echo "  <tr align="left" bgcolor="white" height="80">"
echo "    <td><font face="courier new" size="1" color="black">"
echo "      <br>"
echo "      <pre>"
echo "       $STORAGE1"
echo "       $STORAGE2"
echo "       $STORAGE3"
echo "       $STORAGE4"
echo "       $STORAGE5"
echo "      </pre></font>"
echo "    </td>"
echo "  </tr>"
函数存储\u util\u 1942
{
如果[$SETFLAG_1942=“是”];
然后
对于{1..5}中的i
做
TMPSTOR=$(cat$HCREPORT1942 | grep-A$i磁盘| tail-1)
规则集=$(cat$HCREPORT1942 | grep-A$i磁盘| tail-1 | awk'{print$6}'| cut-d'''-f1)
如果[$RULESET-gt 90]
然后
存储$i=“${TMPSTOR}”
其他的
存储$i=“${TMPSTOR}”
fi
完成
fi
回声“”
echo“存储容量[必须小于90%”
回声“”
回声“”
回声“”
回声“
” 回声“” echo“$STORAGE1” echo“$STORAGE2” echo“$STORAGE3” echo“$STORAGE4” echo“$STORAGE5” 回声“” 回声“” 回声“”
}

这是我正在创建的HTML基报告的一部分。目标是根据上面设置的条件显示$STORAGE(#)的值。如果高于90,则为红色,否则为绿色

当我试图运行脚本时,它仍然会给我“没有这样的文件或目录”错误:

+++存储工具\u util\u 1942
+++“['是=是']”
+++对于{1..5}中的i
++++cat/apps/data/support\u bin/monitoring/healthcheck/healthcheck.report
++++grep-A1磁盘
++++尾-1
+++TMPSTOR='/dev/mapper/rootdg-rootdgvol2 ext3 1.9G 1.7G 133M 93%/var'
++++cat/apps/data/support\u bin/monitoring/healthcheck/czchols1942.healthcheck.report
++++grep-A1磁盘
++++尾-1
++++awk“{print$6}”
++++切割-d%-f1
+++规则集=93
+++“['93-gt 90']”
+++'STORAGE1=/dev/mapper/rootdg-rootdgvol2 ext3 1.9G 1.7G 133M 93%/var'
./script.sh:line 166:STORAGE1=/dev/mapper/rootdg-rootdgvol2 ext3 1.9G 1.7G 133M 93%/var:没有这样的文件或目录
最后一行之前的计算已经正确,但它如何像执行一样计算值?我应该只作为一个值而不是一个命令


谢谢,

您需要在变量赋值周围加引号,因为您的值有双引号(并且没有引用其他变量),所以我将使用单引号:

var='HELLO WORLD'

如果需要解释赋值中的其他变量,则需要使用双引号,转义任何文字变量:

var=“${TMPSTOR}”

您还需要为“动态命名”变量使用数组:

存储[$i]=“…”

echo“$STORAGE[1]”


更大的问题是你到底想用这个做什么。为什么您要使用
标记,为什么不将CSS类设置为变量(因为这是HTML中唯一的区别),等等。

在您发布的脚本段中,有很多事情可以“以更好的方式”完成。这是它们的样本

  • 不要使用不必要的管道
    awk
    将完成
    grep
    tail
    cut
    将完成的所有工作,而无需为管道中的每个步骤启动额外的流程

    eval STORAGE$i="'<font color=\"red\"><b>\${TMPSTOR}</b></font>'"
    
  • 在变量周围使用引号。如果[$SETFLAG_1942=“YES”],您已经包括了
    这是向后的。在引号中要保护的是变量,而不是硬编码到脚本中的文本

  • 您正在使用动态变量命名。这是一件坏事,因为它通常需要使用
    eval
    ,这是邪恶的

    declare -a STORAGE
    if [ -n "${RULESET//[0-9]/}" ]; then
      # RULESET contains non-digts, which it should not.
      echo "ERROR: invalid data, please investigate." >&2
      exit 1
    elif [ "$RULESET" -gt 90 ]; then
      STORAGE[$i]="<span class='warn'>${TMPSTOR}</span>"
    else
      STORAGE[$i]="<span class='good'>${TMPSTOR}</span>"
    fi
    
    然后使用类似以下内容遍历阵列:

  • 最后,您的HTML需要改进,但这与这个问题无关


  • 更好的方法是不使用
    ,例如…嗨,brian,我已经尝试使用引号了,我收到了错误消息:没有这样的文件或目录,如果满足某个规则/条件,我基本上是在尝试修改/更新HTML中的文本。在世界上很多地方我都必须这样做page@Ravenwolf-如果您仅在使用引号时收到该错误消息,请确保您使用的是直接单引号,而不是反勾号。Backticks尝试以bash命令的形式执行内容quotes@Ravenwolf,也许你应该编辑你的文章,把带有引号的版本也包括进去。如果不是引用本身的话,肯定还有别的错误。如果您复制/粘贴我的答案中的代码行并在bash提示符下运行它,它会工作,对吗?谢谢ghoti,这很好。我的剧本目前相当粗糙,因为它是匆忙完成的。我会考虑你的建议
    eval STORAGE$i="'<font color=\"red\"><b>\${TMPSTOR}</b></font>'"
    
    declare -a STORAGE
    if [ -n "${RULESET//[0-9]/}" ]; then
      # RULESET contains non-digts, which it should not.
      echo "ERROR: invalid data, please investigate." >&2
      exit 1
    elif [ "$RULESET" -gt 90 ]; then
      STORAGE[$i]="<span class='warn'>${TMPSTOR}</span>"
    else
      STORAGE[$i]="<span class='good'>${TMPSTOR}</span>"
    fi
    
    for item in ${STORAGE[@]}; do
      echo "$item"
    done