time
bashを使用している人は、シェル組み込みと/usr/bin/time
()を区別する必要があると聞きましたtime(1)
。私はプログラム時間を設定し、echo
文字列リダイレクトを使用して入力を自動化する方法を見つける必要がありました<<<
。結果は次のとおりです。
$ time python3 -c "a=input("");print(a)" <<< "12"
12
real 0m0.023s
user 0m0.020s
sys 0m0.000s
この場合、シェル組み込み関数が呼び出されます。
$ echo "12" | time python3 -c "a=input("");print(a)"
12
0.01user 0.00system 0:00.02elapsed 100%CPU (0avgtext+0avgdata 6524maxresident)k
0inputs+0outputs (0major+593minor)pagefaults 0swaps
time(1)
この場合に呼び出されます。
なぜこれが起こるのですか?環境が違うの?
Ubuntu 14.04 x86_64を使う
ベストアンサー1
これパイプ構造途中では時間は許可されず、パイプラインの先頭にのみ時間が許可されます。
また、timeは示されているように「シェルキーワード」ですtype time
。
しかし、禁止されているものは何もありません。複合コマンド(そして毎回時間):
time comm1 | ( time comm2 )
したがって、サブシェルを使用して、次のようにこの問題を解決できます。
echo "12" | ( time python3 -c "a=input("");print(a)" )
または、次のようにすることもできます。
echo "12" | { time python3 -c "a=input("");print(a)"; }