Как преобразовать строку в целое число в UNIX

Я d1="11" и d2="07". Я хочу преобразовать d1 и d2 целым числам и выполнить d1-d2. Как это сделать в UNIX?

d1 - d2 в настоящее время возвращает "11-07" в результате для меня.

4 ответов


стандартное решение:

 expr $d1 - $d2

вы также можете сделать:

echo $(( d1 - d2 ))

но будьте осторожны, что это будет лечить 07 как восьмеричное число! (так 07 это то же самое, что 7, а 010 отличается от 10).


любой из этих будет работать из командной строки. bc вероятно, ваше самое прямое решение.

используя bc:

$ echo "$d1 - $d2" | bc

используя awk:

$ echo $d1 $d2 | awk '{print  - }'

используя perl:

$ perl -E "say $d1 - $d2"

используя Python:

$ python -c "print $d1 - $d2"

все вернуть

4

let d=d1-d2;echo $d;

Это должно помочь.


используйте этот:

#include <stdlib.h>
#include <string.h>

int main()
{
    const char *d1 = "11";
    int d1int = atoi(d1);
    printf("d1 = %d\n", d1);
    return 0;
}

etc.