Как я пишу сценарий для вывода файла HTML?

Что я делаю неправильно в этом сценарии?

#!/bin/bash

cat > /tmp/flash-viewer.htm <<- _EOF_
<HTML><HEAD><TITLE>Flash Viewer</TITLE></HEAD><BODY>
<object width=\"1280\" height=\"720\" data=\"$1\"></object>
</BODY></HTML>
_EOF_

if [ -n $BROWSER ]; then
  $BROWSER '/tmp/flash-viewer.htm'
elif which xdg-open > /dev/null; then
  xdg-open '/tmp/flash-viewer.htm'
elif which gnome-open > /dev/null; then
  gnome-open '/tmp/flash-viewer.htm'
else
  echo "Could not detect the web browser to use."
fi

Сценарий дает эти ошибки:

joe@U13:~/Script$ ./html-flash-viewer.sh "/home/joe/video.swf"
/tmp/flash-viewer.htm: line 1: <HTML><HEAD><TITLE>Flash: command not found
/tmp/flash-viewer.htm: line 2: <object: command not found
/tmp/flash-viewer.htm: line 3: </BODY></HTML>: No such file or directory

Есть ли некоторая escape-последовательность, которую я пропускаю? Я уже попытался использовать \, чтобы выйти из скобок LT/GT и включить HTML в одинарные и двойные кавычки. Каждый производит подобные ошибки.

1
задан 23 May 2014 в 16:52

1 ответ

Если $BROWSER пуст [ -n $BROWSER ], становится всего [ -n ]. Это тестирует, если -n имеет ненулевую длину, которая всегда верна.

Тогда $BROWSER '/tmp/flash-viewer.htm' выполняется, который на самом деле является всего '/tmp/flash-viewer.htm', если $BROWSER пусто.

Использование

if [ -n "$BROWSER" ]; then

так, чтобы всегда был второй аргумент.

Для обнаружения точного тракта браузера используйте which <browser>, заменяя <browser> с браузером, с которым Вы пытаетесь открыть файл.

, Например,

which firefox

возвратился бы /usr/bin/firefox, таким образом, Вы могли сделать:

BROWSER=/usr/bin/firefox
5
ответ дан 10 November 2019 в 18:23

Другие вопросы по тегам:

Похожие вопросы: