shell脚本中的$((expr))和if((expr))

shell脚本中的$((expr))和if((expr))

2023年8月2日发(作者:)

shell脚本中的$((expr))和if((expr))经常搞迷糊shell脚本中的

$((expr))、((1+2-3)),也总是记不清是if ((1+2 > 3))还是if $((1+2>3)),今天写脚本⼜遇到了,查阅了bash命令的man⼿册,总算厘清了,整理⼀下,加深印象。bash 中,有种语法叫ARITHMETIC EVALUATION,⽀持整数四则运算。1.

$((expr)) 叫

Arithmetic Expansion,其中的 expr 遵循ARITHMETIC EVALUATION的规则。$ echo $((1+2))3$ echo $((2**5))322.

((expression))是shell中所谓”复合命令“中的⼀种(其它的有if,for,{ list } 等),其中的

expression 遵循ARITHMETICEVALUATION的规则。当数学表达式expression的计算结果等于零的时候,((expression))的退出码是1当数学表达式expression的计算结不等于零的时候,((expression))的退出码是0$ ((1+2))$ echo $?0$ ((1+2-3))$ echo $?1根据这⼀点,可以把((expression))⽤在if语句的条件判断中,⽤来⽐较整数⼤⼩,⽐[[命令更⽅便⼀些。$ if ((689*128 > 2300)) ; then echo hello; fihello#

⽤ [[

的等价写法$ if [[ $((689*128)) -gt 2300 ]];then echo hello; fihello在shell脚本⾥经常需要判断上⼀个命令是否执⾏成功,⽤

if (($?))就能做到#!/bin/bash# File: gbk_to_#

把给定⽂件从GBK编码转换为 UTF-8

编码# Example: ./gbk_to_ foofile="$1"tmp_file=$(mktemp)iconv -f GBK -t utf-8 "$file" > $tmp_fileif (($?)); then echo "转换 $file 失败"else cat $tmp_file > "$file" echo "转换 $file 完成"firm $tmp_fileps:下⾯的写法和上⾯是等价的,节省了字符,但不够直观。#!/bin/bash# File: gbk_to_#

把给定⽂件从GBK编码转换为 UTF-8

编码# Example: ./gbk_to_ foofile="$1"tmp_file=$(mktemp)iconv -f GBK -t utf-8 "$file" > $tmp_file && cat $tmp_file > "$file" || echo "转换⽂件 $file 失败"rm $tmp_file

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690918349a463277.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信