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
. Однако встроенные двойные кавычки являются проблемой. Как показывает подсветка синтаксиса, вы на самом деле не встраиваете кавычки. Скорее, вы неоднократно начинаете и заканчиваете разделы двойных кавычек.
Переключите одинарные кавычки на двойные кавычки, а затем экранируйте все встроенные кавычки с помощью \"
. Это исправит красную / черную подсветку синтаксиса.
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. Тогда вам не нужны отвратительные обратные слеши. 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.
content+="<tr><td valign='top'><img src='/icons/unknown.gif' alt='[ ]' width='16' height='16' /></td><td>"
if [ "$directory" == "." ]; then
content+="<a href='$root_directory/$file/index.html'>"
else
content+="<a href='$root_directory/$directory/$file'>"
fi
content+="$file</a></td><td align='right'>$file_time </td><td align='right'> $file_size </td><td> </td></tr>"