shell expr命令,【shell編程之expr的使用】

 2023-12-09 阅读 34 评论 0

摘要:shell編程之expr的使用語法格式獲取expr運算的結果expr進行算數運算expr進行字符串的處理練習 expr是一個shell命令,可以使用man expr查看命令的幫助手冊 語法格式 shell expr命令、expr 表達式 注: 1> 表達式中使用變量時必須加$ 2> 表達式的運算符兩邊

shell編程之expr的使用

  • 語法格式
  • 獲取expr運算的結果
  • expr進行算數運算
  • expr進行字符串的處理
  • 練習

expr是一個shell命令,可以使用man expr查看命令的幫助手冊

語法格式

shell expr命令、expr 表達式
注:
1> 表達式中使用變量時必須加$
2> 表達式的運算符兩邊必須加空格
原因:expr本質就是一個命令
expr 100 + 200 —> 執行expr命令,100和+和200作為三個參數傳遞給expr程序,
expr程序中通過argv和argc獲取執行程序時傳遞的參數。
expr 100+200 # 錯誤的寫法
3> expr不可以進行自增和自減運算
expr++ ----> error 不支持
expr-- ----> error 不支持
expr a + 1
expr a - 1 ----> OK
4> 在expr中使用的部分運算符需要進行轉移
\ * \ > \ < \ ( \ )
具體是否需要轉移,根據編寫的時候確定,如果報錯或者結果不正確可能就是運算符需要轉移
5> 在expr的表達式中使用變量時,最好將變量使用雙引號括起來

獲取expr運算的結果

變量名=expr 表達式

expr進行算數運算

ARG1 < ARG2
ARG1 <= ARG2
ARG1 = ARG2
ARG1 != ARG2
ARG1 >= ARG2
ARG1 > ARG2
成立返回1,不成立返回0,使用變量時,給變量加"“,部分運算符需要進行轉義
ARG1 + ARG2
ARG1 - ARG2
ARG1 * ARG2
ARG1 / ARG2
ARG1 % ARG2
使用變量時,給變量加”",部分運算符需要進行轉義

jenkins執行shell命令。ARG1 | ARG2
只要有一個變量的值為真(變量的值不為0或者非空),則輸出ARG1的值,否則輸出0

ARG1 & ARG2
只有兩個變量的值都為真(變量的值不為0或者非空),則輸出ARG1的值,否則輸出0

expr進行字符串的處理

expr match STRING REGEXP
從STRING字符串中和REGEXP字符串進行比較,如果比較成功返回相同字符的個數,不成功返回0

expr substr STRING POS LENGTH
從STRING字符串中截取子字符串,POS從那個位置開始截取,LENGTH截取字符串的長度;
注:STRING字符串的第一個字符的起始編號為1

expr index STRING CHARS
從STRING字符串中查找第一次出現CHARS字符的位置,成功返回字符的編號,沒有找到返回0;
如果一個字符串中有多個CHARS,返回第一次出現此字符的位置
注:STRING字符串的第一個字符的起始編號為1

expr length STRING
計算字符串的長度 等價于${#STRING}

練習

通過read讀入一個網址,將網址解析賦值給一個數組,如下
使?expr以.為界限,截取字符串放?到數組中并輸出,比如
arr[0]=www
arr[1]=hqyj
arr[2]=com
注: 不能用cut

#!/bin/bash
read -p "請輸入網址:" net
arr=()
len=`expr index "$net" "."`
arr[0]=`expr substr "$net" 1 "$((len-1))"`
echo ${arr[0]}
length=`expr length "$net"`
str=`expr substr "$net" "$((len+1))" "$((length-len))"`
len1=`expr index "$str" "."`
length1=`expr length "$str"`
arr[1]=`expr substr "$str" 1 "$(($len1-1))"`
echo ${arr[1]}
arr[2]=`expr substr "$str" "$(($len1+1))" "$(($length1-$len1))"`
echo ${arr[2]}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/195645.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息