ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

UNIX 同好会コミュのタブ区切りヒアドキュメントを配列に入れたいがタブが消えてしまい困ってます

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ヒアドキュメントをタブ区切りで書き、
ループでいったん配列に入れた後、再びループ中でタブ区切り列を取り出したいのですが、
ヒアドキュメントを読み込んだ時点でタブが消えてしまうようです。
これはUNIXのヒアドキュメントの仕様なのでしょうか?
OSはHP-UX 11v2で、シェルはbashです。

先ずお客様の要件として、
・複数のコマンド実行結果をファイルにリダイレクト
・個々のコマンド実行後のエラー時にif文で処理をハンドリング
・エラーハンドリングは全てのコマンドで同じ処理
というものがあります。

個々のコマンドをベタ打ちで、コマンド数分if文を書きたくはないので、
以下のように“コマンド”,“結果出力ファイル名”をヒアドキュメントで書いておき、
ループ中で1行づつ配列に入れた後、またループ中で1行づつ、
awk -F \t '{print $1}'、awk -F \t '{print $2}'
で取り出してコマンド実行させ、
エラー時は同じエラーハンドリング、とやりたいのですが、
ヒアドキュメントからCMDLINEに取り込んだ時点でタブが消えてしまうようです。

画面で見るだけではなく、
echo ARR[2] > ARR.txt
で吐いて、odで見た時点で消えてます。

\でエスケープしたり、デリミタからの入力リダイレクト時に“-”を付けてみたり、
等は試してみました。

列セパレータをカンマ等にすれば最終目的は達せられると思うのですが、
好みの問題ですが、出来ればタブ区切りレコードでやりたいのです。
何か回避策はないものでしょうか?

#やりたい事
i=0
while read CMDLINE; do
ARR[i]=$CMDLINE
i=`expr $i + 1`
done <<-_CMDDEF_
"コマンド1"\ コマンド1結果.txt
"コマンド2 -オプション"\ コマンド2結果.txt
"コマンド3 引数"\ コマンド3結果.txt
"コマンド4 -オプション 引数"\ コマンド4結果.txt
#以下コマンド沢山!
_CMDDEF_

for i in ${ARR[@]}
do
CMD=`echo $ARR[i] | awk -F \t '{print $1}'`
STDOUT=`echo $ARR[i] | awk -F \t '{print $2}'`
$CMD > $STDOUT
if [ $? -ne 0 ]
#エラーハンドリング1
elif [ -z $STDOUT ]
#エラーハンドリング2
fi
done

#######################################################
#この投稿は解決を急いでおり、同内容を他コミュニティに投稿させていただく予定です。
#投稿先での頂いたレスや解決した場合の状況報告など、責任をもってさせていただきますので、
#マルチポストではなく、いわゆるクロスポストとして、平にご容赦いただきたく願います。
#######################################################

コメント(2)

現在までのクロスポスト先を報告しておきます。
http://mixi.jp/view_bbs.pl?id=4456741&comm_id=209032
http://mixi.jp/view_bbs.pl?id=405757&comm_id=68577
http://mixi.jp/view_bbs.pl?id=9555552&comm_id=52870
http://mixi.jp/view_bbs.pl?id=9554085&comm_id=6295
http://mixi.jp/view_bbs.pl?id=9555242&comm_id=150915
です。
>All
クロスポスト先を更新しました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

UNIX 同好会 更新情報

UNIX 同好会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング