Что я делаю неправильно в этом сценарии?
#!/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 в одинарные и двойные кавычки. Каждый производит подобные ошибки.
Если $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