美文网首页
运算符相关话题

运算符相关话题

作者: rochestor | 来源:发表于2017-10-15 14:11 被阅读9次

运算符

赋值运算符

=
# "=" 即可以用作赋值,也可以用作测试
# "="左右不允许有空格
var=27
category=minerals  


#   =   作为测试操作符

if [ "$string1" = "$string2" ]
then
   command
fi

#  [ "X$string1" = "X$string2" ] 这样写是安全的,
#  这样写可以避免任意一个变量为空时的报错。
#  (变量前加的"X"字符规避了变量为空的情况)

算术运算符

** 幂运算
let a=5**3
echo $a  # 125
+=
#自增常用的几种写法
a=1
let "a=$a+1"
(( a++ ))
(( a = $a + 1 ))
n=$[ $n + 1 ]  # 整数扩展符。在 $[ ] 中可以计算整数的算术表达式
let "a++"
注意:注意,Bash并不支持浮点运算,Bash会将带小数点的数看做字符串
a=1.5

let "b = $a + 1.3"  # 报错
# t2.sh: let: b = 1.5 + 1.3: syntax error in expression
#                            (error token is ".5 + 1.3")

# 如果你想在脚本中使用浮点数运算,借助bc 或外部数学函数库

位运算

位运算很少出现在shell脚本中

逻辑(布尔)运算符

! 非(NOT)
fi
&& 逻辑与(AND)
if [ $condition1 ] && [ $condition2 ]
#  等同于:  if [ $condition1 -a $condition2 ]
#  返回true如果 condition1 和 condition2 同时为真...

if [[ $condition1 && $condition2 ]]    # 可行
#  注意,&& 运算符不能用在[ ... ]结构里。

数字常量

shell脚本会把数字以十进制整数看待(base 10),除非数字加了特殊的前缀或标记。 带前缀0的数字是八进制数(base 8);带前缀0x的数字是十六进制数(base 16)。 内嵌 # 的数字会以 BASE#NUMBER 的方式进行求值(不能超出当前shell支持整数的范围)

# 十进制数: 默认
let "dec = 32"
echo "decimal number = $dec"             # 32
# 一切正常。


# 八进制数: 带前导'0'的数
let "oct = 032"
echo "octal number = $oct"               # 26
# 结果以 十进制 打印输出了。
# ------ ------ -----------


# 十六进制数: 带前导'0x'或'0X'的数
let "hex = 0x32"
echo "hexadecimal number = $hex"         # 50

echo $((0x9abc))                         # 39612
#     ^^      ^^   双圆括号进行表达式求值
# 结果以十进制打印输出。


# 其他进制数: BASE#NUMBER
# BASE 范围:  2 - 64
# NUMBER 必须以 BASE 规定的正确形式书写,如下:

let "bin = 2#111100111001101"
echo "binary number = $bin"              # 31181

let "b32 = 32#77"
echo "base-32 number = $b32"             # 231

let "b64 = 64#@_"
echo "base-64 number = $b64"             # 4031

# 这种表示法只对进制范围(2 - 64)内的 ASCII 字符有效。
# 10 数字 + 26 小写字母 + 26 大写字母 + @ + _

双圆括号结构

(( a = 23 ))  #  C风格的变量赋值,注意"="等号前后都有空格

echo "a (initial value) = $a"   # 23

(( a++ ))     #  后缀自增'a',C-style.
echo "a (after a++) = $a"       # 24

(( a-- ))     #  后缀自减'a', C-style.
echo "a (after a--) = $a"       # 23


(( ++a ))     #  前缀自增'a', C-style.
echo "a (after ++a) = $a"       # 24

(( --a ))     #  前缀自减'a', C-style.
echo "a (after --a) = $a"       # 23


########################################################
#  注意,C风格的++,--运算符,前缀形式与后缀形式有不同的
#+ 副作用。

n=1; let --n && echo "True" || echo "False"  # False
n=1; let n-- && echo "True" || echo "False"  # True

#  感谢 Jeroen Domburg。
########################################################



(( t = a<45?7:11 ))   # C风格三目运算符。
#       ^  ^ ^
echo "If a < 45, then t = 7, else t = 11."  # a = 23
echo "t = $t "                              # t = 7


唯有爱与技术不可辜负

相关文章

  • 运算符相关话题

    运算符 赋值运算符 = 算术运算符 ** 幂运算 += 注意:注意,Bash并不支持浮点运算,Bash会将带小数点...

  • Shell基础脚本-运算符相关话题

    运算符 变量赋值,初始化或改变一个变量的值 ( = ) 等号=赋值运算符,既可用于算术赋值,也可用于字符串赋值 注...

  • shell编程相关

    常用语法说明 参数相关 进程相关 算术运行 关系运算符 布尔运算符 字符串运算符 文件相关 流程控制相关 Here...

  • Python运算符

    仅用学习参考 运算符相关 算数运算符 比较(关系)运算符 逻辑运算符 赋值运算符 运算符的优先级 01. 算数运算...

  • 入门篇/Chapter 5

    运算符 运算符是告诉PHP做相关运算的标识符号。一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符...

  • 拜年相关话题

    拜年这个话题,具有相当多的情感元素和文化内涵。所谓夸赞一个人会说话,说的全是“拜年话”,可见,人们拜年时候相互说的...

  • Flutter(三) Dart语言基础-运算符

    本文主要介绍运算符相关操作 算术运算符 加减乘除: + , - , * , / , % , ~/ 递增递减: va...

  • Python 特殊方法一览

    Python 特殊方法一览 和运算符无关的特殊方法 和运算符相关的特殊方法

  • 常用的运算符

    常用的运算符 @(Java学习) 一、何为运算符? 运算符是一种“功能”符号,用来通知Java进行相关的运算。Ja...

  • Java中常用的运算符

    什么是运算符? 运算符是一种“功能”符号,用以通知 Java 进行相关的运算。 Java 语言中常用的运算符可分为...

网友评论

      本文标题:运算符相关话题

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