プロが教える店舗&オフィスのセキュリティ対策術

表題の件で教えてください。

kshのシェルスクリプトを作成しているのですが、
原因不明のエラーで悩んでいます。


■やりたいこと
あるコマンド<CMD>の実行結果を配列DETAILに格納したい。

■現状
<CMD>の実行結果を配列DETAILに格納しようとしています。

<CMD>の単体での実行結果は以下の通りです。

CMD実行結果(イメージ)
----------
Title
----------
Detail
A ...
B ...
----------

この結果を以下のようにして変数に代入しようとするとエラーが発生してしまいます。
set -A DETAIL @(<CMD>)
set -A DETAIL `<CMD>`

エラーメッセージは以下です。
ksh: set: --: unknown option


恐らく実行結果に「---」という文字列があるためエラーになっているのだと思われます。
これをエラーとせず、配列に---を格納する方法を何かご存じないでしょうか。

A 回答 (1件)

やってみましたが、問題ありません。



$ set -A ZZZZ `printf "------\naaaaa\n------\nbbbbbbb\ncccccc\n"`
$ echo ${ZZZZ[*]}
------ aaaaa ------ bbbbbbb cccccc
$ ksh --version
version sh (AT&T Research) 93t 2008-07-25

問題が発生する最小限のソースを書いてください。

この回答への補足

以下が最小限の該当部です。
set -A EXEC_DETAIL `<CMD> 2>&1`
echo ${EXEC_DETAIL[0]}

 ※実行している<CMD>の実装がおかしく、常に標準エラー出力に結果が出力されています。
  そのため、標準エラー出力を標準出力にコピーし結果を取得しようとしています。

実行したところ以下が出力されます。
ksh: set: --: unknown option
(質問時と同じエラーです。)

なお例で頂いたスクリプトを実行したところ、同様のエラーが出てしまいました。

また例の最後にありました --version を実行したところ、上記同様のエラーが発生し、バージョンの確認ができませんでした。

補足日時:2009/06/09 09:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!