将HTML标记分配给变量
只是一个简单的问题,伙计们。我想在BASH中将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
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>'"
代码>这是向后的。在引号中要保护的是变量,而不是硬编码到脚本中的文本
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
然后使用类似以下内容遍历阵列:
更好的方法是不使用
,例如…嗨,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