我在这个脚本中做错了什么?
#!/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
我是不是遗漏了某种转义序列?我已经尝试使用 \ 来转义 LT/GT 括号,并将 html 括在单引号和双引号中。每个方法都会产生类似的错误。
答案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