shell-变量的数值运算与特殊应用expr
1. expr(evaluate expressions)命令的用法:
expr命令一般用于整数值,当也可用于字符串,用来求表达式变量的值,同时expr也是一个手工命令行计算器。
语法:expr expression
[yanwei@yanwei-04 logs]$ expr 2 + 2
4
[yanwei@yanwei-04 logs]$ expr 2 - 2
0
[root@1-241 ~]# expr 2 * 2
expr: 语法错误
[root@1-241 ~]# expr 2 \* 2
4
[root@1-241 ~]# expr 2 + 2
4
[root@1-241 ~]# expr 2+2
2+2
[root@1-241 ~]# expr 2 / 2
1
[root@1-241 ~]# expr 2 \*\* 2
expr: 语法错误
[root@1-241 ~]# expr 2 % 2
0
提示:
1) 注意运算符左右都有空格
2) 使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解星号的含义。
2. 增量计数
expr在循环中可用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法为命令替代,最基本的一种是从expr命令接收输出并将之放入循环变量。
例:给自变量i加1
[root@1-241 ~]# i=0
[root@1-241 ~]# i=`expr $i + 1`
[root@1-241 ~]# echo $i
1
expr$[$a+$b]表达式形式,其中$a $b可以为整数值
[root@1-241 ~]# expr $[2+3]
5
[root@1-241 ~]# expr $[2*3]
6
[root@1-241 ~]# expr $[2**3]
8
[root@1-241 ~]# expr $[2/3]
0
[root@1-241 ~]# expr $[2%3]
2
[root@1-241 ~]# a=5
[root@1-241 ~]# b=6
[root@1-241 ~]# expr $[$a+$b]
11
expr 将其后的串解释为表达式并计算其值,运算符前后需有空格
其他特殊用法:
expr 用法ssh-copy-id脚本
if expr "$1":".*\.pub" ; then
#expr id_dsa.pub : '.*\.pub',匹配*.pub格式的文件如果是则为真。例:
#[oldboy@oldboy .ssh]$ expr "id_dsa.pub" : ".*\.pub"
#10 这里是匹配后字符数
#man expr
#string :regexp
anchored pattern match of regexp in string
[root@1-241 ~]# expr "test.pub" : ".*\.pub" && echo 1 ||echo 0
8
1
[root@1-241 ~]# expr "test.x" : ".*\.pub" && echo 1 ||echo 0
0
0
通过expr判断变量是否为整数
[root@1-241 scripts]# cat judge_int.sh
read -p "pls input:"a
expr $a + 0 &>/dev/null
[ $? -eq 0 ] && echo int||echo chars
执行完
[root@1-241 scripts]# sh judge_int.sh
pls input:a
chars 加强版:持续等待输入连续判断,整数就退出,错误继续判断输入
[root@1-241 scripts]# cat judge_int.sh
while true
do
read -p "pls input:" a
expr $a + 0 &>/dev/null
if [ $? -eq 0 ]
then
echo int
exit 1
else
echo chars
fi
done
执行结果:
[root@1-241 scripts]# sh judge_int.sh
pls input:a
chars
pls input:r
chars
pls input:12
int
通过expr计算字符串的长度
[root@1-241 scripts]# chars=`seq -s" " 100`
[root@1-241 scripts]# echo ${#chars}
291
[root@1-241 scripts]# echo $(expr length "$chars")
291
shell-变量的数值运算与特殊应用expr的更多相关文章
- Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构
一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...
- [Shell]Bash变量:数值运算及运算符
------------------------------------------------------------------------------------------------- Sh ...
- shell中的数值运算
By francis_hao Oct 2,2017 本文摘录自bash的man手册. 算数运算相关的形式 形式 含义 ((expression)) expression按照下面描述的算术 ...
- shell脚本基础 数值运算 判断 及if语句
数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [root@ceshiji ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 ...
- shell基础:数值运算与运算符
linux的shell中,变量的类型默认都是字符串型. export将aa声明为环境变量.也可用declare声明.其实就是改变了-x属性 $(()) 最常用.
- LinuxShell脚本编程基础2-变量与数值运算、父shell和子shell
1.变量和数值运算 Shell脚本的变量不需要声明的 对变量赋值有两种方式, 直接用“=” 或者用键盘输入值 #!/bin/bash name1="Jack" echo $name ...
- shell之数值运算
Shell中声明变量默认是字符串, 要参与数值运算,可使用下面方式,简单,表示以数值方式.
- Linux shell 变量 数学 运算
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
- shell 数值运算
declare数值运算 linux默认变量类型为字符串 declare [+/-] [选项] 变量名 '-' 给变量设定类型属性 '+' 取消变量的类型属性 '-a' 将变量声明为数组型 '-i' 将 ...
随机推荐
- Linux命令使用教程
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包. 目 ...
- 01 fs模块
1 fs.readFile 异步执行函数 /** fs 读取文件相对路径是相对终端命令行所在的路径 process.cwd()返回终端命令行的绝对路径 * */ fs = require('fs') ...
- 现象:当指定logback的FileNamePattern为日期2020-01-15后,如果有线程不断的往里写log,过了零点文件不会变成下一日2020-01-16,还是会在2020-01-15里继续写 结论:写log的线程不停,文件不会按日子更换。
logback版本:1.1.11 这个是我实验验证的,昨天我配置了一个logback,然后用两个线程不断往里写log,结果发现到了今天2020-01-16日,log文件还是昨天的logbackCfg. ...
- C#的TextBox的四种禁止编辑方法
前言 一般而言,Textbox中有两个属性可以对其进行防止编辑的设定,这是最基础的知识,也是我要提出的前两种方法.而后两种方法实际为一种,但可以应用于不同环境中. 一.ReadOnly属性 这样设置, ...
- leetcode刷题-36有效的数独
题目 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次.数字 1-9 在每一列只能出现一次.数字 1-9 在每一个以粗实线分隔 ...
- selenium+python3+pycharm
当使用selenium实现元素定位时,运行: 元素定位,常用8大方法.具体百度 在此以id定位进行解释 #from selenium import webdriver # driver=webdriv ...
- 虚拟PWN初探
前言 之前看到星盟Q群里面的消息,Freedom师傅在B站直播关于虚拟pwn入门的公开课,然后就去听了一波,感觉受益匪浅.之前一直以为虚拟pwn是超级复杂的东西,今年打比赛也遇到了好几次,一直无从下手 ...
- Playbook使用,编写YAML
YAML是什么? YAML是一个可读性高.用来表达数据序列的格式语言 YAML:YAML Ain't a Markup Language YAML以数据为中心,重点描述数据的关系和结构 YAML的格式 ...
- ParticleSystem的小优化
最近游戏场景希望加入一些ParticleSystem来丰富场景,这样肯定会带来一定的性能开销.一般来说ParticleSystem的优化就是尽量减少粒子数,尽量不使用粒子碰撞等.而今天要说的是,多个P ...
- Spring基于XML的IOC环境搭建及入门
一.使用Maven构建Java项目 * 项目目录结构 1. 在sun.service包下创建UserDao接口和接口实现类: UserDao接口: package sun.service; /** * ...