dockerで機械学習(103) 環境構築(3)docker/linux/macos bash スクリプト, ms-dos batchファイル
docker
dockerでシェルスクリプトを作るには、何かエディタがあるとよい。
エディタ
# apt-get install vim
編集
# vi py.sh
拡張子はsh(shell script)
実行権
# chmod +x py.sh
+x で実行権(eXecute)を付与する。
実行
./py.sh ch01
./をつけて、現在のディレクトリのファイルであることを指定。
例題
py.sh
#!/bin/bash
cd $1
for f in *.py
do
python $f.py
done
cd ..
#!/bin/bash
cd $1
for f in *.py
do
python $f.py
done
cd ..
というファイルを作成
# ./py.sh ch01
(null): can't open file 'analyze_webstats.py.py': [Errno 2] No such file or directory
(null): can't open file 'gen_webstats.py.py': [Errno 2] No such file or directory
(null): can't open file 'performance_test.py.py': [Errno 2] No such file or directory
# ls ch01
analyze_webstats.py data gen_webstats.py performance_test.py
おお、実行時の.pyが余分だった。
#!/bin/bash
cd $1
for f in *.py
do
python $f
done
cd ..
実行しなおし。
(base) root@fc6d6bfbba64:/BuildingMachineLearningSystemsWithPython# ./py.sh ch01
Traceback (most recent call last):
File "analyze_webstats.py", line 10, in <module>
import matplotlib.pyplot as plt
File "/opt/conda/lib/python3.7/site-packages/matplotlib/pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup
[backend_name], 0)
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/backend_qt5agg.py", line 15, in <module>
from .backend_qt5 import (
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/backend_qt5.py", line 19, in <module>
import matplotlib.backends.qt_editor.figureoptions as figureoptions
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/qt_editor/figureoptions.py", line 20, in <module>
import matplotlib.backends.qt_editor.formlayout as formlayout
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/qt_editor/formlayout.py", line 54, in <module>
from matplotlib.backends.qt_compat import QtGui, QtWidgets, QtCore
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/qt_compat.py", line 158, in <module>
raise ImportError("Failed to import any qt binding")
ImportError: Failed to import any qt binding
Traceback (most recent call last):
File "gen_webstats.py", line 14, in <module>
import matplotlib.pyplot as plt
File "/opt/conda/lib/python3.7/site-packages/matplotlib/pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup
[backend_name], 0)
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/backend_qt5agg.py", line 15, in <module>
from .backend_qt5 import (
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/backend_qt5.py", line 19, in <module>
import matplotlib.backends.qt_editor.figureoptions as figureoptions
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/qt_editor/figureoptions.py", line 20, in <module>
import matplotlib.backends.qt_editor.formlayout as formlayout
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/qt_editor/formlayout.py", line 54, in <module>
from matplotlib.backends.qt_compat import QtGui, QtWidgets, QtCore
File "/opt/conda/lib/python3.7/site-packages/matplotlib/backends/qt_compat.py", line 158, in <module>
raise ImportError("Failed to import any qt binding")
ImportError: Failed to import any qt binding
Traceback (most recent call last):
File "performance_test.py", line 12, in <module>
number=10000)
File "/opt/conda/lib/python3.7/timeit.py", line 232, in timeit
return Timer(stmt, setup, timer, globals).timeit(number)
File "/opt/conda/lib/python3.7/timeit.py", line 176, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: name 'xrange' is not defined
し、し、しまった。python 2.7じゃないとダメだった。
参考資料(reference)
docker 入門
https://qiita.com/kaizen_nagoya/items/2f31319e40ddaa0bf8a5
shell でディレクトリ内のファイルに対してループ処理
https://qiita.com/elzup/items/e839a8c4e815808fb4bc
bashの変数展開によるファイル名や拡張子の取得
https://qiita.com/mriho/items/b30b3a33e8d2e25e94a8
パス文字列からファイル名などを抜き出す
https://qiita.com/ktr_type23/items/94747a4b27e8a630ce48
初心者向けシェルスクリプトの基本コマンドの紹介
https://qiita.com/zayarwinttun/items/0dae4cb66d8f4bd2a337
シェルスクリプトの基礎知識まとめ
https://qiita.com/katsukii/items/383b241209fe96eae6e7
プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話
https://qiita.com/piroor/items/77233173707a0baa6360
文書履歴
ver. 0.10 初稿 20181006
ver. 0.11 番号変更、参考文献追記 20181028
Author And Source
この問題について(dockerで機械学習(103) 環境構築(3)docker/linux/macos bash スクリプト, ms-dos batchファイル), 我々は、より多くの情報をここで見つけました https://qiita.com/kaizen_nagoya/items/3f7b39110b7f303a5558著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .