美文网首页
使用shell运算

使用shell运算

作者: Amelie_ec72 | 来源:发表于2019-01-15 21:23 被阅读0次

    日常用到的就是整数和浮点数的运算,两者都有很多方式实现,各自记录一种吧,因为写多了,我也记不住。。。

    整数运算 (())

    1. 简单运算

    echo $(( 5 + 3 ))
    8
    echo $(( 5 / 3 ))
    1
    echo $(( 2 / 3 ))
    0
    a = 3; echo $(( ${a} + 3))
    6
    

    从上面例子可以知道,$(())只支持整数运算,如果相除的话,只保留整数,并且不会四舍五入。

    2. 判断

    < 
    <=
    ==
    !=
    >=
    > 
    % 取余
    

    以上判断,若为真,返回1,假返回0. 可以利用这个小功能去做简单的判断。

    整数计算expr

    expr 5 + 5
    10
    str="123 456 789";expr substr "$str" 5 3
    456
    str="123 456 789";expr substr "$str" 5 3
    456 789
    echo ${#str}
    11
    $expr length "$str"
    11
    str="123 456 789";expr index "$str" 9
    11
    str="123 456 789";expr index "$str" "a"
    0
    

    expr不仅可以进行计算,还可以对字符串进行取值,语法为 expr substr "${str}" position, 从匹配位置取到最后。expr substr "${str}" position length, 从匹配位置取n个,坐标都是从1开始的。还可以计算字符串的长度。还可以返回第一个匹配字符的索引,如果没找到,返回0。

    浮点计算

    echo "scale=3;4/5" | bc
    0.800
    a=0.355;printf "%.1f\n" "$a"
    0.4  #可以使用printf进行四舍五入, bc不会进行四舍五入。
    cat 1.txt
    2 3
    4 7
    3 2
    6 8
    cat 1.txt | gawk '{printf "%.3f\n", $1/$2}'
    0.667
    0.571
    1.500
    0.750
    cat 1.txt | gawk '{printf "%.2f\n", $1/$2}'
    0.67
    0.57
    1.50
    0.75
    

    利用awk+printf,既可以四舍五入,又可以格式刷输出。

    补充:printf

    printf是echo 的加强版, printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。以后可以多多使用~
    语法:printf "string format" arguments

     printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
     姓名     性别   体重kg
      printf "%-s,%-s,%.2f\n" 郭靖 男 66.1234
      郭靖,男,66.12
    

    %s 代表字符型
    %d 代表十进制,我觉得可以理解为整数?
    %f 代表浮点数。%.2f保留两位小数
    \n 换行
    \t 是tab键,目前还不知道用途是什么
    %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充.
    可以参考 (http://www.runoob.com/linux/linux-shell-printf.html

    相关文章

      网友评论

          本文标题:使用shell运算

          本文链接:https://www.haomeiwen.com/subject/rskudqtx.html