シェルスクリプトマガジン

第5回 文書をPDF化する

 6行目では、現在作業中のディレクトリ(カレントディレクトリ)のパスを「currnt」変数に格納しています。 第1回で説明した「コマンド置換」を使っています。 これは、7行目で移動したディレクトリから元のディレクトリに戻るためです。ちなみに、Bashならこのような方法ではなく、「pushd」「popd」で対応可能です。

 7行目の「cd」コマンドでオフィス文書を格納するディレクトリに移動しています。8行目で、officeディレクトリ内にあるオフィス文書のファイル名を取り出し、「office_files」の変数に一覧として格納しています。ここでもコマンド置換を使っています。「ls」コマンドの引数に「*」のワイルドカードと、オフィス文書の拡張子である「.doc」「.docx」「.odt」「.xls」「.xlsx」「.ods」「.ppt」「.pptx」「.odp」を指定して取り出しています。該当するファイルがないときはエラーメッセージが出力されるので、第3回のときのように「2>/dev/null」で破棄しています。

 11~15行目では、「for」文を使ってoffice_files変数に代入されたファイル名でループを回しています。変換するファイルがないこともあるので、15行目の「2>/dev/null」でエラーメッセージを破棄しています。for文については、第1回を参照してください。

 13行目で、PDFファイルへの変換処理に時間がかかるので、処理中を示すメッセージを表示しています。14行目がオフィス文書からPDFファイルに変換する処理です。「–headless」オプションがGUIを使わない指定です。「–nolockcheck」オプションを付けると、オフィス文書が編集中かどうかを確認して編集中でない文書のみ変換します。「–language」オプションで言語を指定します。日本語なので「ja」です。「–convert-to」オプションには変換形式を指定します。PDF形式に変換するので「pdf」になります。なお、文書ごとに変換用のフィルタが異なりますが、ファイル名から自動的に判別します。「–outdir」オプションに変換したファイルの出力先を指定します。最後の引数は、変換前のオフィス文書です。なお、変換時にメッセージが出力されるので、第3回のときと同様に「1>/dev/null」でメッセージは破棄しています。