linux随机输出加减乘除_Linux 脚本里计算加减乘除及expr命令

要想得到 $STR shell 变量的长度,请输入:

LENGTH=`expr $STR : ".*"`这会将 LENGTH 变量设置成由 :(冒号)运算符给出的值。.*(点,星号)模式会对任何字符串从头到尾去匹配,因此冒号运算符给出 $STR 变量的长度作为匹配字符的数目。注意,.* 必须在引号内,来防止 shell 将 *(星号)处理成模式匹配字符。引号不是模式中的一部分。

如果 $STR 变量设置成空字符串或者包含了任何空格(空白或者制表键)的话,那么该命令会显示错误信息 expr: syntax error。这是因为 shell 通常不会将空字符串传递给命令。在这种情况下,expr 命令只能看见:

:.*shell 还会除去单个的引号。不起作用的原因是因为冒号运算符要求有两个值。这个问题可以通过将 shell 变量以双引号括起来解决:

LENGTH=`expr "$STR" : ".*"`现在,如果 $STR 变量的值为空的话,LENGTH 变量被设置成 0 值。通常我们推荐将 shell 变量用双引号括起来。不要将 shell 变量用单引号标记括起来。

要想使用一个字符串的一部分,请输入:

FLAG=`expr "$FLAG" : "-*\(.*\)"`只要 $FLAG shell 变量前面有连字符,就会除去连字符。冒号运算符给出 FLAG 变量的一部分,该变量由在 \( 和 \) 字符(反斜杠,开括号和反斜杠,闭括号)中间的子表达式匹配。如果您忽略 \( 和 \) 子表达式字符的话,冒号运算符会给出匹配的字符数目。

如果 $FLAG 变量设置成 - (连字符), 则该命令会显示一个语法错误消息。这是因为 shell 会将 $FLAG 变量的值替换,在运行 expr 命令之前。expr 命令不知道连字符是一个变量的值。它只能理解:

- : -*\(.*\)并且它会将第一个连字符解释成减号运算符。要消除这种问题,请使用:

FLAG=`expr "x$FLAG" : "x-*\(.*\)"`要想使用 expr 命令在 if 语句中,请输入:

if expr "$ANSWER" : "[yY]" >/dev/null

则返回 ANSWER 以 "y" 或者 "Y" 开始 fi如果 $ANSWER 变量以 y 或者 Y 开始的话,if 语句的then 部分会执行。如果匹配成功表达式的结果为 1,并且 expr 命令会返回一个为 0 的出口值,这个出口值被 if 语句识别成逻辑值真。如果匹配失败,结果为 0,出口值为 1。

将 expr 命令的标准输出重新定向到 /dev/null 特殊文件,而废弃该表达式的结果。如果您没有对它重新定向,结果就会写到标准输出中,通常是您的工作站显示器。

考虑下列表达式:

expr "$STR" = "="如果 $STR 变量有值为 =(等号),那么在 shell 处理完这个命令之后,expr命令会看到表达式:

= = =expr 命令将这个解释成在一行中的三个等号运算符,并显示一个语法出错消息。一旦 shell 变量的值与 expr 运算符中的一个相同,这种情况就会发生。避免这种问题的方法是,将该表达式写成:

expr "x$STR" = "x="要想返回 $SHELL 环境变量 /usr/bin/ksh 的长度,请输入:

expr length $SHELL显示如下:

12要想返回 "de" 字符串中的任何一个字符在 "abcdef" 中出现的第一个位置,请输入:

expr index abcdef de显示如下:T

4要想返回 "fd" 字符串的任何字符在 "abcdef" 中出现的第一个位置,请输入:

expr index abcdef fd显示如下:

4要想返回 "Goodnight Ladies" 字符串中从位置11开始的6个字符长的字符串,请输入:

expr substr "Goodnight Ladies" 11 6显示如下:

Ladies文件

/usr/bin/expr 包含了 expr 命令。0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值