このブログで 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)
コメント