🫠

コマンドラインシェルのセミコロン(;)について - 複数の命令を1行に

2024/09/22に公開

複数の命令を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