内容が0から100の数字であるテキストファイルa.txtがあります。数値を 10 ずつ増やして a.txt を変更するコマンドが必要ですが、最終結果は 100 未満でなければならないという制約があります。つまり、数値が100より大きい値に達した場合にのみ保持されます(例:95 + 10 = 105)100。
10まで減らすコマンドも必要ですが、最終結果が0以上になるには似ている必要があります。
私ができることは、echoを使用してファイルを直接変更することですが、この方法では、古い数字に追加するのではなく、数字を別のものに置き換えることができます。
答え1
これにより10が追加されます。
echo "$(awk '{x=$0+10;if(x>100)x=100; print x}' a.txt)" > a.txt
これにより10が減ります。
echo "$(awk '{x=$0-10;if(x<0)x=0; print x}' a.txt)" > a.txt
$0
はファイルから読み取られた現在の行の値であるため、10を加算または減算して、制約内にあることを確認します。
優れたコメントのためのワイルドカードのおかげで、一時ファイルを使用せずにこれを行うことができます。
答え2
read bl <a.txt; echo "$((bl<90?bl+10:100))" >a.txt
... 100以下の数値を計算する行が1つしかない場合はa.txt
機能します。値を10に設定すると、a.txt
ほとんどのシェルで空になっていても機能します。反対のロジックが機能します。
read bl <a.txt; echo "$((bl<10?0:bl-10))" >a.txt