expr

维基媒体消歧义页

exprUnixUnix-like作業系統下計算表達式及輸出相應結果的命令行工具,最早見於Unix v7。這個命令也已經被移植到IBM i系統上。[1]

expr
原作者Dick Haight
(貝爾實驗室)
開發者多個開源軟體商業軟體開發者
首次發布1979年,​45年前​(1979
作業系統Unix, Unix-like, IBM i
平台跨平台
類型命令

概覽

expr計算整數字符串表達式,包括正則表達式格式匹配。表達式中的每一個符號(運算符、值等)必須以分開的參數傳遞。書寫表達式最大的挑戰就是要避免Unix shellexpr需要處理的字符當作控制指令而執行動作。

語法

語法: expr expression

三種運算可用:

  • 整數:加、減、乘、除、求餘數
  • 字符串:匹配正則表達式;某些版本上還可以查找一組字符("index")、子字符串("substr"),求字符串長度("length")
  • 兩者皆可:比較(如:相等、不等、小於)

示例

下面是一個涉及布爾表達式的(不符合POSIX標準)例子:

expr length  "abcdef"  "<"  5  "|"  15  -  4  ">"  8

這個例子會輸出"1"。這是因為"abcdef"長為6(也就是大於5),故"|"左側表達式返回0;但「15-4」得11(也就是大於8),因此右側表達式為真,使得整個表達式為真,所以結果為1。在此示例中,程序退出狀態為0。

在純算術運算下,通常使用bc更為簡便,是因為它將整個表達式看作一個參數。例如:

echo "3 * 4 + 14 / 2" | bc

可移植腳本編程時,"index"、"length"、"match"和"substr"等命令的使用需要避免;字符串匹配仍然可行,但必須使用"string : regexp"語法。

另請參見

參考資料

  1. ^ IBM. IBM System i Version 7.2 Programming Qshell (PDF). [2020-09-05]. (原始內容存檔 (PDF)於2020-09-18) (英語). 

外部連結