elif语句从字面上打印字符串$file
而不是变量的值。我该如何解决?
while read file
do
file_time=$(du -s --time "$directory/$file" | cut -f2)
if [ -d "$directory/$file" ]; then
if [ "$directory" == "." ]; then
content+="<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]" width="16" height="16" /></td><td><a href=\"$root_directory/$file/index.html\">$file</a></td><td align="right">$file_time </td><td align="right"> - </td><td> </td></tr>"
else
content+="<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]" width="16" height="16" /></td><td><a href=\"$root_directory/$directory/$file/index.html\">$file</a></td></td><td align="right">$file_time </td><td align="right"> - <td> </td></tr>"
fi
elif [ -f "$directory/$file" ]; then
file_size=$(du -h "$directory/$file" | cut -f1)
if [ "$directory" == "." ]; then
content+="<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="16" height="16" /></td><td><a href=\"$root_directory/$file/index.html\">$file</a></td><td align="right">$file_time </td><td align="right"> $file_size </td><td> </td></tr>"
else
content+='<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="16" height="16" /></td><td><a href=\"$root_directory/$directory/$file\">$file</a></td><td align="right">$file_time </td><td align="right"> $file_size </td><td> </td></tr>'
fi
fi
done < <(ls -1 --group-directories-first $directory --ignore=index.html --ignore=icons --ignore=pictures --ignore=make_index.sh --ignore=good.sh)
答案 0 :(得分:1)
void
比较两行中的语法高亮显示。在第一个中,混合了红色和黑色文本。第二个全是红色。为什么?您使用的引号不同:一个以if [ "$directory" == "." ]; then
content+="<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="16" height="16" /></td><td><a href=\"$root_directory/$file/index.html\">$file</a></td><td align="right">$file_time </td><td align="right"> $file_size </td><td> </td></tr>"
else
content+='<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="16" height="16" /></td><td><a href=\"$root_directory/$directory/$file\">$file</a></td><td align="right">$file_time </td><td align="right"> $file_size </td><td> </td></tr>'
fi
开头,另一个以"
开头。
变量不会用单引号引起来,所以我不建议使用'
。您想扩展'
,而不是单引号。
双引号版本允许$file
进行扩展。但是,嵌入的双引号是一个问题。正如语法高亮显示的那样,您实际上并不是嵌入引号。相反,您反复地在双引号部分开始和结束。
将单引号切换为双引号,然后使用$file
对所有嵌入的引号进行转义。这样可以解决红色/黑色语法突出显示的问题。
\"
或在HTML中使用单引号。然后,您不需要任何难看的反斜杠。 HTML允许使用两种引号。
if [ "$directory" == "." ]; then
content+="<tr><td valign=\"top\"><img src=\"/icons/unknown.gif\" alt=\"[ ]\" width=\"16\" height=\"16\" /></td><td><a href=\"$root_directory/$file/index.html\">$file</a></td><td align=\"right\">$file_time </td><td align=\"right\"> $file_size </td><td> </td></tr>"
else
content+="<tr><td valign=\"top\"><img src=\"/icons/unknown.gif\" alt=\"[ ]\" width=\"16\" height=\"16\" /></td><td><a href=\"$root_directory/$directory/$file\">$file</a></td><td align=\"right\">$file_time </td><td align=\"right\"> $file_size </td><td> </td></tr>"
fi
如果无条件地添加HTML的通用位,整个内容将更容易阅读。
if [ "$directory" == "." ]; then
content+="<tr><td valign='top'><img src='/icons/unknown.gif' alt='[ ]' width='16' height='16' /></td><td><a href='$root_directory/$file/index.html'>$file</a></td><td align='right'>$file_time </td><td align='right'> $file_size </td><td> </td></tr>"
else
content+="<tr><td valign='top'><img src='/icons/unknown.gif' alt='[ ]' width='16' height='16' /></td><td><a href='$root_directory/$directory/$file'>$file</a></td><td align='right'>$file_time </td><td align='right'> $file_size </td><td> </td></tr>"
fi