このブログで PowerShell を使って簡易インターフェースを作るという記事を書きました。
PowerShellでインタラクティブな簡易インターフェースをつくる
Android上のTermux上でこのようなインターフェースを動作させたいので、「ShellScript」を使って同じようなプログラムを作成します。Termux上でPowerShellを動作させる方法はあるかもしれませんが、情報が見つかりくいため断念しています。
ShellScriptのSwitch文
ShellScript は Switch文の条件分岐をさせたいときは Switch ではなく caseを使います。
while :
do
echo ""
echo 1: create_table.py
echo 2: drop_table.py
echo 3: insert_user.py
echo 4: delte_user.py
echo 5: tables.py
echo 6: users.py
echo 7: update_user.py
echo 8: where_name.py
echo q: quit
echo ""
echo please enter program_number?:
read str
case $str in
1 ) python create_table.py;;
2 ) python drop_table.py;;
3 ) python insert_user.py;;
4 ) python delete_user.py;;
5 ) python tables.py;;
6 ) python users.py;;
7 ) python update_user.py;;
8 ) python where_name.py;;
"q" ) echo "\ quit"
break;;
* ) echo no such number;;
esac
done
exit 0
ShellScriptで改行する方法がわからなかったので、echoを列挙しています。
入力受付はreadを使えばよいようです。
今回新たに無限ループをさせてみました。
while : do
while は上記のように2行で書かないとエラーになるのですが 1行で書きたい場合はwhile :; doでもよいようです。無限ループを抜けるにはbreakを使います。
ShellScriptには他の言語のSwitch文のようにdefaultがないので、30行目のように*ワイルドカードを使います。このときcase文の処理ブロックの一番下に書くようにします。そうでないと、ワイルドカードが先に評価されてしまい思った通りの動作にならないです。
おまけ: Linuxで隠しファイルを消す
Linuxの隠しファイルを確認するには、以下のコマンドを使います。
ls -a # .file
隠しファイルはファイル名の先頭が .ドット ではじまるものです。これをrm *fileのようにしても削除することはできないので、rm .fileのようにきちんとドットまで書くようにします。
また、隠しファイルとは直接関係しませんが、ファイル名にバックスラッシュが含まれている場合は、削除時にきちんとエスケープしてやる必要があります
rm \\file\\
おまけ: ファイル内置換
こちらはpythonプログラムになります。Termux上でいろいろやるとき、作りました。
filepath = input("filepath?: ")
replace_before = input("replace_before?: ")
replace_after = input("replace_after?: ")
contents = []
with open(filepath, 'r') as f:
for line in f:
line = line.replace(replace_before, repl
contents.append(line)
with open(filepath, 'w') as f:
for content in contents:
f.write(content)

コメント