ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:akari131 Linuxのbashシェルスクリプトについて教えて下さい。
困り度:
  • 暇なときにでも
 Linux, bash超初心者です。
 WindowsのAdobe Readerで印刷できないPDFを印刷しようと、Vine Linux上でpdf2psとps2pdfを組み合わせ、以下のようなスクリプトを作ってみました。
[pdfconv.sh]
-----
#!/bin/sh
if [$1 = ""]; then
echo "Usage: ./pdfconv.sh input.pdf [output.pdf]"
else
file1=$1
file2=${file1%pdf}ps
if [$2 != ""]; then
file3=$2
else
file3=${file1%.pdf}2.ps
fi
echo $file1' -> '$file3
pdf2ps -r1200x1200 ${file1}
ps2pdf $file2 $file3
rm $file2
fi
-----
 引数が渡されていないとUsageを表示するようにしてみたのですが、引数を渡して
$ ./pdfconv.sh test.pdf
として実行すると、
./pdfconv.sh: line 3: [test.pdf: command not found
とのエラーが表示されてしまいます。処理自体には問題ないのですが、何だか気持ち悪いです。解決策を教えていただけますでしょうか。よろしくお願いします。
質問投稿日時:08/03/11 12:34
質問番号:3852731
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:Tacosan メッセージを見ればほぼ自明だと思うんだがなぁ....
[ と $1 の間にスペースが必要です.
ちなみに「いろんな場合」を考えると, 条件は
if [ "$1" = "" ]; then
あるいは
if [ "x$1" = "x" ]; then
とするのが安全.
種類:回答
どんな人:一般人
自信:自信あり
回答日時:08/03/11 12:40
回答番号:No.1
この回答へのお礼ありがとうございました。無事、解決しました。