Perl'in Time :: HiRes modülünü geçen süreyi hesaplamak için çağıran bir komut dosyası var. geri keneler aracılığıyla Perl tercümanaKabuk betiği değişkeninde saklanan Perl kodunu nasıl uygularım?
use Time::HiRes qw(time); print time
ve sonuçları geri döndük: Temelde komut aşağıdaki tek astar geçirerek zaman alır.
#/bin/sh
START_TIME=`perl -e 'use Time::HiRes qw(time); print time'`
END_TIME=`perl -e 'use Time::HiRes qw(time); print time'`
ELAPSED_TIME=$(echo "($END_TIME - $START_TIME)" | bc)
echo $ELAPSED_TIME
Ben daha modüler bir şekilde yeniden yazmak çalıştım ama bash kabuğunun alıntı kurallarına stumped.
#/bin/sh
CALCULATE='bc'
NOW="perl -e 'use Time::HiRes qw(time); print time'"
START_TIME=`$NOW`
[Some long running task ...]
ELAPSED_TIME=$(echo "($NOW - $START_TIME)" | $CALCULATE)
echo $ELAPSED_TIME
Bash şey düzgün alıntı olmadığını şikayet ediyor. Neden bash sadece komutu $ NOW olarak genişletir ve idam edilecek olan arka kene için iletir?
Bir kabuk betiği değişkenine perl kodunu gömmek için çeşitli yollar denedim, ancak dosyasını doğru şekilde göremiyorum.
Herkes, kabuk betikindeki perl kodunun nasıl doğru bir şekilde yazılacağını bilir? Bir fonksiyonu kullanarak
@ Mat'da bas saatini kullanabilirsiniz. Kişilerin daha kolay yanıt vermesini sağlamak için çok daha büyük bir komut dosyasından bir alıntı yaptım. Kestim ve yanlış yapıştırdım. İşaret ettiğin için teşekkürler. Sabit. Ama sorun yine de alıntıdır. – GeneQ
FYI, perl one-liner'ınızı 'perl -MTime :: HiRes = time -e' print time 'olarak yazabilirsiniz –