如何编写脚本以输出 html 文件?

Sie*_*ile 1 bash scripts html cat

我在这个脚本中做错了什么?

#!/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
Run Code Online (Sandbox Code Playgroud)

该脚本给出了这些错误:

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
Run Code Online (Sandbox Code Playgroud)

我缺少某种转义序列吗?我已经尝试使用 \ 来转义 LT/GT 括号并将 html 括在单引号和双引号中。每个都会产生类似的错误。

Flo*_*sch 5

如果$BROWSER是空的[ -n $BROWSER ]就变成了[ -n ]。测试是否-n具有非零长度,这总是正确的。

然后$BROWSER '/tmp/flash-viewer.htm'执行它实际上只是 '/tmp/flash-viewer.htm'如果$BROWSER为空。

if [ -n "$BROWSER" ]; then
Run Code Online (Sandbox Code Playgroud)

所以总是有第二个论点。

要找出浏览器的确切路径,请使用which <browser>,替换<browser>为您尝试打开文件的浏览器。

例如,

which firefox
Run Code Online (Sandbox Code Playgroud)

会返回/usr/bin/firefox,所以你可以这样做:

BROWSER=/usr/bin/firefox
Run Code Online (Sandbox Code Playgroud)