yuu_nkjm blog
2010-10-11(Mon) [長年日記]
[Linux][command][bash] サブディレクトリにある全ての(任意の範囲の)shファイルを起動する
execというディレクトリのサブディレクトリにシェルスクリプトが複数あり,それを起動したい.
ディレクトリ構成
exec/000/simulation.sh
exec/001/simulation.sh
…
exec/010/simulation.sh
全てのshを起動
find exec/ -print|grep sh|sort
上記のコマンドを叩くと,スクリプトの一覧が獲得できる.このコマンドの実行結果を変数xに格納し,forループで回しながら,各スクリプトをevalで評価する.
#!/bin/bash
x=`find exec/ -print|grep "sh"|sort`
for i in $x
do
`chmod +x $x`
eval $i
done
指定した範囲のshを起動
複数台のPCで実行をすることを考えると範囲指定が出来たほうが便利だと言うことで,別バージョンも作った.FIRSTとLASTの値を決め打ちではなく,lsやfindを使って決定したいが,ひとまずはいいや.
#!/bin/bash
FIRST=$1
INCR=$2
LAST=$3
if [ ! -n "$2" ]
then
echo -n "Input FIRST [def val = 0]: "
read FIRST
echo -n "Input INCR [def val = 1]: "
read INCR
echo -n "Input LAST [def val = 200]: "
read LAST
fi
if [ ! -n "$FIRST" ]
then
FIRST=0
fi
if [ ! -n "$INCR" ]
then
INCR=1
fi
if [ ! -n "$LAST" ]
then
LAST=200
fi
for i in `seq -f "%03g" $FIRST $INCR $LAST`
do
x=`find settings/exec/$i -print|grep "sh"|sort`
if [ ! -n "$x" ]
then
break
fi
`chmod +x $x`
eval $x
done
起動例
[usr@hoge ~/workspace]$ ./execSimulations.sh 5 1 7
settings/exec/005/simulation.sh
settings/exec/006/simulation.sh
settings/exec/007/simulation.sh
[usr@hoge ~/workspace]$ ./execSimulations.sh
Input FIRST [def val = 0]: 3
Input INCR [def val = 1]: -1
Input LAST [def val = 200]: 0
settings/exec/003/simulation.sh
settings/exec/002/simulation.sh
settings/exec/001/simulation.sh
settings/exec/000/simulation.sh
それにしても,Windowsでもbash欲しい….win-bashってどうなんやろうか.NYACUS(今はNYAOSなのか)ってWindows上でのシェル拡張を使っているけど,乗り換えてみようかな.
- https://www.google.co.jp/ ×175
- https://www.google.com/ ×8
- https://www.google.co.jp/ ×1
- http://getpocket.com/unread/1 ×1
- http://rankbuilder2.net/ ×1
- https://www.google.ca/ ×1
- シェルスクリプト サブディレクトリ ×15 / シェルスクリプト サブフォルダ ×5 / "if [ -n $X ]" ×4 / シェル 全ディレクトリ ×3 / EXEC002 ×3 / bash ディレクトリ for ×2 / bash for サブディレクトリ ×2 / すべてのディレクトリに シェル ×2 / bash すべてのディレクトリ ×2 / シェルスクリプト 下位ディレクトリ ×2 / bash for in サブディレクトリ ×2 / shell サブディレクトリ ×2 / シェル for サブディレクトリ ×2 / シェルスクリプト ディレクトリ すべて ×2 / bash incr ×2 / bash サブディレクトリ ×2 / bash 複数ディレクトリ ×2 / シェルスクリプトglob サブディレクトリ ×1 / シェルスクリプト ディレクトリ構成 ×1 / シェルスクリプト サブフォルダ 全て ×1 / シェルスクリプト 全ディレクトリ ×1 / シェルスクリプト サブディレクトリ名 ×1 / bash 全てのファイル ×1 / shellscript for sub directory ×1 / find exec if ×1 / シェルスクリプト 下のディレクトリにあるファイル ×1 / sh ディレクトリ ×1 / シェルスクリプト exce ×1 / perl パイプ 受け取る ×1 / シェル ディレクトリのファイル for 全てのディレクトリ ×1 / シェルスクリプト すべてのディレクトリ ×1 / sh exec ディレクトリ ×1 / リアルタイム bash 起動 ×1 / シェル ls サブディレクトリ ×1 / bash サブディレクトリ 削除 ×1 / シェルスクリプト サブフォルダ作成 ×1 / シェル ファイル 範囲 ×1 / bash ディレクトリ全てに ×1 / bsh 実行 下位フォルダ ×1 / sh -d if ディレクトリ ×1 / bash for ディレクトリ ×1 / .shファイル 下位ディレクトリ ×1 / sh 範囲 ×1 / nyaos exec ×1 / スクリプト shファイル サブディレクトリ ×1 / bash ディレクトリ すべての ×1 / bash サブフォルダ ×1 / シェルスクリプト 比較 ディレクトリの全ファイル ×1 / bash サブスクリプト ×1 / sh サブディレクトリ ×1 / bash 範囲指定 ×1 / bash 範囲 ×1 / shファイル 起動 ×1 / シェルスクリプト for in 範囲 ×1 / シェル for 全ディレクトリ ×1 / bash ディレクトリファイル ×1 / linux サブフォルダ ループ ×1 / bash ディレクトリのすべてのファイルに ×1 / windows7 sh ファイル ×1 / "win-bash" ×1 / exec sh -c ×1 / win-bash 设置 ×1 / find exec リダイレクト ×1 / bash for in last ×1 / bash exec 複数 ×1 / bash if 範囲 ×1 / sh ファイルをたたく ×1 / シェルスクリプト if ! -a ×1 / sh 全てのディレクトリ ×1 / bash find サブディレクトリ ×1 / "seq -f" コマンド IPアドレス ×1 / Windowos shファイル ×1 / 下位ディレクトリ exec ×1 / シェルスクリプト ディレクトリ ファイル ×1 / bash grep $\x 範囲 ×1 / シェルスクリプト サブディレクトリ find ×1 / .shファイル サブディレクトリ ×1 / exec シェルスクリプト windows linux 違い ×1 / サブディレクトリ ファイル 実行 シェル ×1 / for bash ×1 / shell ファイル 範囲指定 ×1 / sh directoryのすべて ×1 / bsh exec ×1 / bash exec コマンド ×1 / bash for find ×1 / バッチファイル bash 起動 ×1 / bsh exec コマンド ×1 / シェル サブディレクトリ ×1 / bash find 範囲 ×1 / bash 以下のディレクトリ 全部 ×1 / php exec shell script 動かない ×1 / sh exec 複数 ×1 / bash for in do ×1 / シェル ファイル一覧 サブディレクトリ ×1 / shell script 複数ディレクトリ ×1 / grep sh サブディレクトリ ×1 / サブフォルダ全て シェル ×1 / sh nyaos ×1 / Linux シェル 全てのディレクトリ ×1 / bash サブディレクトリ for 検索 ×1