パスワードを忘れた? アカウント作成
この議論は、tuneo (2938)によって テキとトモのテキ禁止として作成されたが、今となっては 新たにコメントを付けることはできません。

シェル力を高める:シェルスクリプト内部で環境変更」記事へのコメント

  • by tuneo (2938) on 2017年09月09日 10時32分 (#3276326) ホームページ 日記

    詳しくはガチ業務の内容になってしまうのでぼやかしてますが、環境定義をやってる/other/dir/*.shは普通に6個とかありまして(場合によってはさらに増える)、私のミッションは各環境で所定の処理を実施し(「なんちゃらなんちゃら」のくだりですね)、結果が正常であることを確認する、というテストなんですね。

    しかも各々の環境下で行う処理はそこそこ手数が多くて時間もかかるため、環境変える→ログアウト→ログイン→面倒で時間のかかる処理→終わるまでぼけーっと待つ→結果確認→最初に戻る、を手作業でくりかえすのがあまりにかったるいという事情がありまして、スクリプト書いて走らせたら離席して一服入れに行くためにやっとるわけです。

    chgenv --listで環境一覧を出せるので、forループの内部でそれぞれの環境に切り替えて処理をする、というようなことをやるために頭を使ったのですが、

    bash --login~とか書くと新しいプロセスになっちゃうしなー。

    は完全に要らぬ心配でした。サブプロセス全然オッケー。なので解決策はこんなん。

    #!/usr/bin/bash
    あれこれいろいろ
    for e in $(chgenv --list)
    do
      chgenv --set $e
      bash --login <<'END'
        じかんのかかるしょり
      END
    done

    で解決です。

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

処理中...