Bashの同様の環境で別の「時間」を呼び出します。

Bashの同様の環境で別の「時間」を呼び出します。

timebashを使用している人は、シェル組み込みと/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)"; }

おすすめ記事