質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

600閲覧

PythonでシバンからHello Worldを実行したが、ターミナルに何も表示されない

hiroga

総合スコア91

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/08/13 01:25

編集2018/08/13 02:09

Pythonでシバンで遊ぼうと思い、以下のコードを実行しました。

python

1#!/usr/bin/env python -c "print('hello-world')" 2print('Hi')

terminal

1$ chmod +x script.py 2$ ./script.py

ところが、予想に反してターミナルに何も出力されませんでした。
(print('Hi')の結果すらも出力されませんでした)

どうしてでしょうか。ご教示いただければ幸いです。

実行環境:

  • macOS High Sierra
  • Python 3.7.0 (pyenvを使用)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tachikoma

2018/08/13 02:05

実行環境を教えて下さい。
hiroga

2018/08/13 02:10

ありがとうございます。追記しました。
guest

回答4

0

ベストアンサー

shebang行で指定したコマンドがいくつの引数まで解釈できるかはOS依存です。
伝統的には引数は1つまでです。

Linuxも引数は1つまでです。シェルのコマンドラインのような、空白による単語分割は行われません。
つまり、コマンドの後の空白以降は1つの引数と見なされ、
#!/usr/bin/env #!/usr/bin/env python -c "print('hello-world')"
だと、
/usr/bin/env "python -c \"print('hello-world')\"" ファイル名
が実行されます。

エラー出ませんでしたか?

なお、MacOSだと機能拡張されていて、シェルのコマンドラインと同じような単語分割が行われ、複数引数が使えるようです。

投稿2018/08/13 03:46

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0
Tips.2 シェバング行の複数オプション
あたりが参考になるのでは。

しかし、なぜこんな必要があるのかが理解できません。シェバングにではなく、普通に「本文」にスクリプトを書けない理由があるのですか。

投稿2018/08/13 03:46

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

例を置いておきます。

bash

1$ echo '#!/usr/bin/python' > test.py 2$ echo 'print "hi"' >> test.py 3$ chmod +x test.py 4$ ./test.py 5hi

投稿2018/08/13 02:13

tachikoma

総合スコア3601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroga

2018/08/13 02:15

すみません、質問が悪かったです。 シバンの-cオプションで指定したスクリプトを標準出力に表示したいのです。できないでしょうか。
guest

0

シバンってなにかよーわかりませんが、
py ファイルはpythonから実行させましょう

投稿2018/08/13 01:28

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/08/13 01:38

そのリンク先がこの質問とどう関わりあるのかわかりませんが、pyファイルはシェルから直接実行できませんぜ
y_waiwai

2018/08/13 01:46

なるほど。エラーメッセージなんかは出てませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問