🫠
コマンドラインシェルのセミコロン(;)について - 複数の命令を1行に
複数の命令を1行に
コマンドラインシェルでは、セミコロン(;)で区切ることで、複数の命令を1行に記述できます。
このことを知らずに、pythonでつくったプログラムの引数として、セミコロン(;)が含まれた文字列を渡し、予想通りの挙動をしませんでした。
以下、備忘録として具体例をメモしておきます。
具体例
count_characters.py:
・与えられた一つの文字列について、大文字や小文字の数などを出力
・引数が1つ以上の場合、エラーを出力
ぼくの予想:
・以下は「df;aj」、「dflajk」、「af」の3つの引数がわたされているのでエラーを出力すべき
実際の結果:
・「df」だけが、文字数カウントされた
・セミコロン(;)につづく、aj
コマンドが実行された
・これらは、セミコロン(;)によって、複数の命令を1行に記述していたから
❯ python count_characters.py df;aj dflajk af
The text contains 2 characters:
0 upper letters
2 lower letters
0 punctuation marks
0 spaces
0 digits
Command 'aj' not found, but can be installed with:
sudo apt install aspectj
Discussion