更新#2
あなたのスクリプトにはいくつかの問題があります。最初は代わりにor`cat file`
を使用する必要が あります。ファイルを開くだけなので、呼び出しは不要です。一方、内部的に適切な機能を備えているため、 and (and ) の呼び出しも必要ありません。したがって、いくつかの s とs を再び節約できます。`<file`
$(<file)
fork
exec
bash
cut
bc
printf
bash
fork
exec
入力ファイルが大きい場合 (cca 32 KiB を超える場合)、for
-loop 行が大きすぎて処理できない可能性があるbash
ため、代わりに -loop を使用しwhile
てファイルを 1 行ずつ読み取ることをお勧めします。
純粋に次のようなことを提案できますbash
(Atleのsubstrソリューションを適用):
while IFS=: read hr min; do
incr_min=$((1$min+1)); #Octal problem solved
echo ${incr_min: -2}; #Mind the space before -2!
#or with glennjackman's suggestion to use decimal base
#incr_min=0$((10#$min+1))
#echo ${incr_min: -2};
#or choroba's solution improved to set variable directly
#printf -v incr_min %02d $((10#$min+1))
#echo $incr_min
done <file
入力ファイル
$ cat file
2:43
2:05
15:00
12:07
12:08
12:09
出力:
44
06
01
08
09
10
printf -v
単一のステップで結果を変数に入れるため、おそらく最も単純です。
tripleee
結果が 60 の場合に何が起こるかについての良い質問です。