expr
维基媒体消歧义页
expr是Unix與Unix-like作業系統下計算表達式及輸出相應結果的命令行工具,最早見於Unix v7。這個命令也已經被移植到IBM i系統上。[1]
原作者 | Dick Haight (貝爾實驗室) |
---|---|
開發者 | 多個開源軟件和商業軟件開發者 |
首次發佈 | 1979年 |
作業系統 | Unix, Unix-like, IBM i |
平台 | 跨平台 |
類型 | 命令 |
概覽
expr計算整數或字符串表達式,包括正則表達式格式匹配。表達式中的每一個符號(運算符、值等)必須以分開的參數傳遞。書寫表達式最大的挑戰就是要避免Unix shell將expr需要處理的字符當作控制指令而執行動作。
語法
語法: expr expression
三種運算可用:
- 整數:加、減、乘、除、求餘數
- 字符串:匹配正則表達式;某些版本上還可以查找一組字符("index")、子字符串("substr"),求字符串長度("length")
- 兩者皆可:比較(如:相等、不等、小於)
示例
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"語法。
另請參見
參考資料
- ^ IBM. IBM System i Version 7.2 Programming Qshell (PDF). [2020-09-05]. (原始內容存檔 (PDF)於2020-09-18) (英語).
外部連結
- 單一UNIX®規範第7期,由國際開放標準組織發佈 : evaluate arguments as an expression – 命令與工具(Commands & Utilities)參考,
- expr invocation in GNU coreutils manual (頁面存檔備份,存於互聯網檔案館)