expr

維基百科,自由的百科全書
跳至導覽 跳至搜尋

expr
原作者Dick Haight
(貝爾實驗室)
開發者多個開源軟件商業軟件開發者
首次發佈1979年,​47年前​(1979
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      作業系統Unix, Unix-like, IBM i
      平台跨平台
      類型命令
      許可協議
        Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)

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

        概覽[編輯]

        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) (English). 

        外部連結[編輯]