更新#2
あなたのスクリプトにはいくつかの問題があります。最初は代わりにor`cat file`を使用する必要が あります。ファイルを開くだけなので、呼び出しは不要です。一方、内部的に適切な機能を備えているため、 and (and ) の呼び出しも必要ありません。したがって、いくつかの s とs を再び節約できます。`<file`$(<file)forkexecbashcutbcprintfbashforkexec
入力ファイルが大きい場合 (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 の場合に何が起こるかについての良い質問です。