動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.1を使用。
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
背景
以下が異なる。
- スクリプトディレクトリ
- データディレクトリ
データディレクトリ(複数)を切り替えながら、スクリプトを実行する。
viでの編集なども検討して、スクリプトディレクトリに常駐したい。
cd -
使用 > 要改善
cd [dir]
とcd -
を組合せてみた。
$ pwd
/home/user/WORK/BASH_170403
$ mkdir -pv TOP/MIDDLE/BOTTOM
$ cd TOP/MIDDLE/BOTTOM/; touch bfile; cd -
/home/user/WORK/BASH_170403
$ pwd
/home/user/WORK/BASH_170403
touch bfile
には実際のスクリプト実行文が入る。
;
で連結していることで、スクリプトが完了した場合でも、停止された場合でも、元のディレクトリに戻るようにしている。
上記のスクリプト実行分(データディレクトリ複数に対して複数ある)を複数用意して、ハッシュタグをつけて実行すれば、複数データディレクトリに対する動作チェックはしやすいように思う。
参考: コマンド実行時にハッシュタグをつけて履歴から検索しやすくしてみる
$ cd TOP/MIDDLE/BOTTOM/; touch bfile; cd - #touchBfile
スクリプト自体に実行対象ディレクトリを指定する引数を用意するのは別案。
教えていただいた項目
@akinomyoga さんのコメントにてサブシェルを使った方法を教えていただきました。
情報感謝です。
追記
cd -
の実行方法ではスクリプトの書き方によってはCtrl+Cした時に元のディレクトリに戻らない状況もありました。例として、以下のスクリプトでは戻りませんでした。
sample_exec
# !/usr/bin/env bash
for loop in $(seq 1 10);do
sleep 0.1
date
done
サブシェルを使う方法の方が良さそうです。