如何将从文件读取的“ 55”更改为整数

时间:2019-03-04 19:30:45

标签: shell unix

我正在尝试从文本文件中读取一个数字,如果该数字+ 8不超过100,则将其增加8:

num='head -c 4 storage.txt' // num = '55'

我如何做一个等价的atoi,从文件中读取一个char,转换为int。 然后执行以下操作:

if(num+8 >= 100)
   return
else num+=8

然后读回文件

num>storage.txt

2 个答案:

答案 0 :(得分:1)

在大多数(如果不是全部)Unis外壳中,所有变量都存储字符串。转换为整数的概念不存在。

但是,某些操作能够将字符串作为输入,将其内部转换为整数,然后执行该操作,然后将结果作为字符串返回。

在bash中,您的意图可以写成:

if [ $(($num + 8)) -lt 100 ]
then
  num=$((num+8))
fi

答案 1 :(得分:0)

有很多方法可以做到这一点。这是一种使用算术扩展(https://www.gnu.org/software/bash/manual/html_node/Arithmetic-Expansion.html)的方法。

if [ $(( num + 8 )) -lt 100 ]; then
    num=$(( num + 8 ))
fi

echo $num > storage.txt