นี่คือคำสั่ง exprposix ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
expr — ประเมินอาร์กิวเมนต์เป็นนิพจน์
เรื่องย่อ
ด่วน ตัวถูกดำเนินการ...
DESCRIPTION
พื้นที่ ด่วน ยูทิลิตีต้องประเมินนิพจน์และเขียนผลลัพธ์ไปยังเอาต์พุตมาตรฐาน
OPTIONS
ไม่
ตัวดำเนินการ
นิพจน์เดียวประเมินโดย ด่วน จะถูกสร้างขึ้นจาก ตัวถูกดำเนินการ ตัวถูกดำเนินการ as
อธิบายไว้ในส่วน EXTENDED DESCRIPTION แอปพลิเคชันจะต้องตรวจสอบให้แน่ใจว่าแต่ละ
สัญลักษณ์ตัวดำเนินการนิพจน์:
( ) | & = > >= < <= != + - * / % :
และสัญลักษณ์ จำนวนเต็ม และ เชือก ในตารางมีไว้เป็นอาร์กิวเมนต์ที่แยกจากกันถึง
ด่วน.
STDIN
ไม่ได้ใช้.
INPUT ไฟล์
ไม่
และพวกเรา ตัวแปร
ตัวแปรสภาพแวดล้อมต่อไปนี้จะส่งผลต่อการดำเนินการของ ด่วน:
ภาษา ระบุค่าเริ่มต้นสำหรับตัวแปรการทำให้เป็นสากลที่ไม่ได้ตั้งค่าหรือ
โมฆะ. (ดูปริมาณคำจำกัดความพื้นฐานของ POSIX.1-2008 Section 8.2,
สากล ตัวแปร เพื่อความเหนือกว่าของความเป็นสากล
ตัวแปรที่ใช้ในการกำหนดค่าของหมวดหมู่สถานที่)
LC_ALL หากตั้งค่าเป็นค่าสตริงที่ไม่ว่าง ให้แทนที่ค่าของค่าอื่นๆ ทั้งหมด
ตัวแปรความเป็นสากล
LC_COLLATE
กำหนดโลแคลสำหรับพฤติกรรมของช่วง คลาสสมมูล และมัลติ-
องค์ประกอบการเรียงอักขระภายในนิพจน์ทั่วไปและโดยสตริง
ตัวดำเนินการเปรียบเทียบ
LC_CTYPE กำหนดสถานที่สำหรับการตีความลำดับไบต์ของข้อมูลข้อความ
เป็นอักขระ (เช่น ไบต์เดี่ยวเมื่อเทียบกับอักขระหลายไบต์ใน
อาร์กิวเมนต์) และพฤติกรรมของคลาสอักขระภายในนิพจน์ทั่วไป
LC_MESSAGES
กำหนดโลแคลที่ควรใช้เพื่อส่งผลต่อรูปแบบและเนื้อหาของ
ข้อความวินิจฉัยที่เขียนถึงข้อผิดพลาดมาตรฐาน
นศ กำหนดตำแหน่งของแค็ตตาล็อกข้อความสำหรับการประมวลผลของ LC_MESSAGES.
อะซิงโครนัส กิจกรรม
ผิดนัด
STDOUT
พื้นที่ ด่วน ยูทิลิตี้จะประเมินนิพจน์และเขียนผลลัพธ์ตามด้วยa
, สู่เอาต์พุตมาตรฐาน
สแตเดอร์
ข้อผิดพลาดมาตรฐานจะใช้สำหรับข้อความวินิจฉัยเท่านั้น
เอาท์พุท ไฟล์
ไม่
ขยาย DESCRIPTION
การก่อตัวของนิพจน์ที่จะประเมินแสดงในตารางต่อไปนี้ NS
สัญลักษณ์ ด่วน, หมดอายุ1และ หมดอายุ2 เป็นตัวแทนของนิพจน์ที่เกิดขึ้นจาก จำนวนเต็ม และ เชือก
สัญลักษณ์และสัญลักษณ์ตัวดำเนินการนิพจน์ (อาร์กิวเมนต์แยกกันทั้งหมด) โดยเรียกซ้ำ
การประยุกต์ใช้โครงสร้างที่อธิบายไว้ในตาราง นิพจน์อยู่ในลำดับ
ของลำดับความสำคัญที่เพิ่มขึ้น โดยมีตัวดำเนินการที่มีลำดับความสำคัญเท่ากันที่จัดกลุ่มระหว่างแนวนอน
เส้น ตัวดำเนินการทั้งหมดจะต้องเชื่อมโยงซ้าย
┌─────────────────────────────────────────────────── ──────────┐
│ การแสดงออก │ รายละเอียด │
├─────────────────────────────────────────────────── ──────────┤
│หมดอายุ1 | หมดอายุ2 │ ส่งกลับการประเมินของ หมดอายุ1 ถ้าเป็น │
│ │ ไม่เป็นโมฆะหรือศูนย์ มิฉะนั้น │
│ │ ส่งคืนการประเมินของ หมดอายุ2 ถ้าเป็น │
│ │ ไม่โมฆะ; มิฉะนั้นศูนย์ │
├─────────────────────────────────────────────────── ──────────┤
│หมดอายุ1 & หมดอายุ2 │ ส่งกลับการประเมินของ หมดอายุ1 ถ้า │
│ │ นิพจน์ไม่ประเมินเป็น null หรือ │
│ │ ศูนย์; มิฉะนั้นจะคืนค่าศูนย์ │
├─────────────────────────────────────────────────── ──────────┤
│ │ ส่งกลับผลลัพธ์ของจำนวนเต็มทศนิยม │
│ │ การเปรียบเทียบถ้าทั้งสองอาร์กิวเมนต์เป็น │
│ │ จำนวนเต็ม; มิฉะนั้น ส่งคืนผลลัพธ์ │
│ │ ของการเปรียบเทียบสตริงโดยใช้โลแคล- │
│ │ ลำดับการเรียงเฉพาะ ผลลัพธ์ │
│ │ ของการเปรียบเทียบแต่ละรายการคือ 1 หากระบุ │
│ │ ความสัมพันธ์เป็นจริงหรือ 0 ถ้า │
│ │ ความสัมพันธ์เป็นเท็จ │
│หมดอายุ1 = หมดอายุ2 │ เท่าเทียมกัน │
│หมดอายุ1 > หมดอายุ2 │ มากกว่า. │
│หมดอายุ1 >= หมดอายุ2 │ มากกว่าหรือเท่ากับ │
│หมดอายุ1 < หมดอายุ2 │ น้อยกว่า │
│หมดอายุ1 <= หมดอายุ2 │ น้อยกว่าหรือเท่ากับ │
│หมดอายุ1 != หมดอายุ2 │ไม่เท่ากัน │
├─────────────────────────────────────────────────── ──────────┤
│หมดอายุ1 + หมดอายุ2 │ การบวกค่าจำนวนเต็มทศนิยม │
│ │ อาร์กิวเมนต์ │
│หมดอายุ1 - หมดอายุ2 │ การลบค่าจำนวนเต็มทศนิยม │
│ │ อาร์กิวเมนต์ │
├─────────────────────────────────────────────────── ──────────┤
│หมดอายุ1 * หมดอายุ2 │ การคูณค่าจำนวนเต็มทศนิยม │
│ │ อาร์กิวเมนต์ │
│หมดอายุ1 / หมดอายุ2 │ การหารจำนวนเต็มของจำนวนเต็มทศนิยม- │
│ │ อาร์กิวเมนต์ที่มีคุณค่า ทำให้เกิดจำนวนเต็ม │
│ │ ผลลัพธ์ │
│หมดอายุ1 % หมดอายุ2 │ เศษของเศษส่วนจำนวนเต็มของทศนิยม │
│ │ อาร์กิวเมนต์ที่มีค่าจำนวนเต็ม │
├─────────────────────────────────────────────────── ──────────┤
│หมดอายุ1 : หมดอายุ2 │ นิพจน์ที่ตรงกัน; ดูด้านล่าง │
├─────────────────────────────────────────────────── ──────────┤
( ด่วน ) │ การจัดกลุ่มสัญลักษณ์ นิพจน์ใดๆ ก็ได้ │
│ │ อยู่ในวงเล็บ วงเล็บ │
│ │ สามารถซ้อนได้ลึกถึง │
│ │ {EXPR_NEST_MAX} │
├─────────────────────────────────────────────────── ──────────┤
│จำนวนเต็ม │ อาร์กิวเมนต์ที่ประกอบด้วย │ . เท่านั้น
│ │ (ตัวเลือก) เอกพจน์ ลบ ตามด้วย │
│ │ ตัวเลข │
│เชือก │ อาร์กิวเมนต์สตริง ดูด้านล่าง │
└─────────────────────────────────────────────────── ──────────┘
แม็ทชิ่ง การแสดงออก
พื้นที่ ':' ตัวดำเนินการที่ตรงกันจะเปรียบเทียบสตริงที่เกิดจากการประเมินของ หมดอายุ1
ด้วยรูปแบบนิพจน์ทั่วไปที่เกิดจากการประเมินของ หมดอายุ2. ปกติ
วากยสัมพันธ์ของนิพจน์จะต้องเป็นไปตามที่กำหนดไว้ในปริมาณคำจำกัดความพื้นฐานของ POSIX.1-2008
Section 9.3, ขั้นพื้นฐาน ปกติ การแสดงออกยกเว้นว่ารูปแบบทั้งหมดจะยึดกับ
จุดเริ่มต้นของสตริง (นั่นคือ เฉพาะลำดับที่เริ่มต้นที่อักขระตัวแรกของ a
สตริงถูกจับคู่โดยนิพจน์ทั่วไป) ดังนั้นจึงไม่ได้ระบุว่า
'^' เป็นอักขระพิเศษในบริบทนั้น โดยปกติ ตัวดำเนินการที่ตรงกันจะส่งกลับ a
สตริงที่แสดงจำนวนอักขระที่ตรงกัน ('0' ในความล้มเหลว) อีกทางหนึ่ง if
รูปแบบมีนิพจน์ย่อยนิพจน์ทั่วไปอย่างน้อยหนึ่งนิพจน์ "[\(...\)]", สตริง
จับคู่โดยนิพจน์การอ้างอิงกลับ "\1" จะถูกส่งกลับ ถ้าการอ้างย้อนหลัง
การแสดงออก "\1" ไม่ตรงกัน จะส่งกลับสตริงว่าง
เชือก ตัวดำเนินการ
อาร์กิวเมนต์สตริงเป็นอาร์กิวเมนต์ที่ไม่สามารถระบุได้ว่าเป็น an จำนวนเต็ม อาร์กิวเมนต์หรือ as
หนึ่งในสัญลักษณ์ตัวดำเนินการนิพจน์ที่แสดงในส่วน OPRANDS
การใช้อาร์กิวเมนต์สตริง ความยาว, ย่อย, ดัชนี,หรือ การจับคู่ ให้ผลลัพธ์ที่ไม่ระบุรายละเอียด
EXIT สถานภาพ
ค่าทางออกต่อไปนี้จะถูกส่งคืน:
0 การแสดงออก ประเมินเป็นโมฆะหรือศูนย์
1 การแสดงออก ประเมินเป็นโมฆะหรือศูนย์
2 ไม่ถูกต้อง การแสดงออก.
>2 เกิดข้อผิดพลาด
ผลกระทบที่เกิด OF ข้อผิดพลาด
ผิดนัด
พื้นที่ ดังต่อไปนี้ ส่วน เป็น ข้อมูล.
ใบสมัคร การใช้
หลังจากประมวลผลอาร์กิวเมนต์โดยเชลล์แล้ว ด่วน ไม่จำเป็นต้องสามารถบอกได้ว่า
ความแตกต่างระหว่างตัวดำเนินการและตัวถูกดำเนินการ ยกเว้นตามค่า ถ้า "$a" is '='ที่
คำสั่ง:
ด่วน $a = '='
ดูเหมือนกับ:
ด่วน = = =
เมื่อข้อโต้แย้งถูกส่งไปยัง ด่วน (และพวกเขาทั้งหมดอาจถูกมองว่าเป็น '=' โอเปอเรเตอร์) NS
ติดตามผลงานได้อย่างน่าเชื่อถือ:
ด่วน X$ = X=
โปรดทราบด้วยว่าปริมาณของ POSIX.1-2008 นี้อนุญาตให้มีการใช้งานเพื่อขยายยูทิลิตี้
พื้นที่ ด่วน ยูทิลิตีอนุญาตให้อาร์กิวเมนต์จำนวนเต็มนำหน้าด้วย unary ลบ นี้
หมายความว่าอาร์กิวเมนต์จำนวนเต็มอาจดูเหมือนตัวเลือก ดังนั้นการปฏิบัติตาม
ใบสมัครต้องใช้ "-−" โครงสร้างของ Guideline 10 ของ Base Definitions volume
ของ POSIX.1–2008, Section 12.2, ประโยชน์ วากยสัมพันธ์ แนวทาง เพื่อป้องกันตัวถูกดำเนินการหากมี
เป็นโอกาสใด ๆ ที่ตัวถูกดำเนินการแรกอาจเป็นจำนวนเต็มลบ (หรือสตริงใดๆ ที่มีตัวดำเนินการนำหน้า)
ลบ).
ตัวอย่าง
พื้นที่ ด่วน ยูทิลิตี้มีไวยากรณ์ที่ค่อนข้างยาก:
* ตัวดำเนินการจำนวนมากยังเป็นตัวดำเนินการควบคุมเชลล์หรือคำสงวน ดังนั้นพวกเขาจึงมี
ที่จะหลบหนีบนบรรทัดคำสั่ง
* แต่ละส่วนของนิพจน์ประกอบด้วยอาร์กิวเมนต์แยกกัน ดังนั้นการใช้ . อย่างเสรี
จำเป็นต้องมีอักขระ ตัวอย่างเช่น:
┌──────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────...
│ โมฆะ │ ถูกต้อง │
├──────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────...
│ด่วน 1+2 ด่วน 1 + 2 │
│ด่วน "1 + 2" │ ด่วน 1 + 2 │
│ด่วน 1 + (2 * 3) │ ด่วน 1 + \( 2 \* 3 \) │
└──────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────...
ในหลายกรณี คุณลักษณะทางคณิตศาสตร์และสตริงที่จัดเตรียมไว้เป็นส่วนหนึ่งของคำสั่งเชลล์
ภาษาใช้ง่ายกว่าภาษาเทียบเท่าใน ด่วน. สคริปต์ที่เขียนใหม่ควร
หลีกเลี่ยง ด่วน เพื่อสนับสนุนคุณสมบัติใหม่ภายในเชลล์ ดู Section 2.5, พารามิเตอร์ และ
ตัวแปร และ Section 2.6.4, คณิตศาสตร์ การขยายตัว.
คำสั่งต่อไปนี้:
a=$(ด่วน $a + 1)
บวก 1 ให้กับตัวแปร a.
คำสั่งต่อไปนี้ for "$a" เท่ากับ /usr/abc/file หรือเพียงแค่ ไฟล์:
ด่วน $a : '.*/\(.*\)' \| $a
ส่งคืนส่วนสุดท้ายของชื่อพาธ (นั่นคือ ไฟล์). แอปพลิเคชันควรหลีกเลี่ยง
ตัวอักษร '/' ใช้เพียงอย่างเดียวเป็นอาร์กิวเมนต์ ด่วน อาจตีความได้ว่าเป็นผู้ดำเนินการฝ่าย
คำสั่งต่อไปนี้:
ด่วน "//$a" : '.*/\(.*\)'
เป็นตัวอย่างที่ดีกว่าของตัวอย่างก่อนหน้านี้ การเพิ่มของ "//" อักขระ
ขจัดความคลุมเครือเกี่ยวกับตัวดำเนินการหารและทำให้นิพจน์ทั้งหมดง่ายขึ้น
โปรดทราบว่าชื่อพาธอาจมีอักขระที่อยู่ใน ไอเอฟเอ ตัวแปรและควร
ถูกยกมาเพื่อหลีกเลี่ยงการมี "$a" ขยายออกเป็นหลายอาร์กิวเมนต์
คำสั่งต่อไปนี้:
ด่วน "$VAR" : '.*'
ส่งกลับจำนวนอักขระใน VAR.
หลักการและเหตุผล
ในข้อเสนอแรกๆ ERE ถูกใช้ในไวยากรณ์นิพจน์ที่ตรงกัน นี้มีการเปลี่ยนแปลง
ถึง BRE เพื่อหลีกเลี่ยงการทำลายแอปพลิเคชันในอดีต
การใช้คำนำหน้า ใน BRE นั้นไม่ได้ระบุเพราะประวัติศาสตร์มากมาย
การใช้งานถือเป็นอักขระพิเศษ แม้ว่าจะมีระบบ
เอกสาร ตัวอย่างเช่น:
ด่วน foo : ^ฟู ด่วน ^ฟู : ^ฟู
คืนค่า 3 และ 0 ตามลำดับบนระบบเหล่านั้น เอกสารของพวกเขาจะหมายถึง
ย้อนกลับ. ดังนั้นเงื่อนไขการยึดจะไม่ระบุเพื่อหลีกเลี่ยงการทำลายประวัติศาสตร์
สคริปต์ที่ใช้คุณลักษณะที่ไม่มีเอกสารนี้
อนาคต ลู่ทาง
ไม่
ใช้ exprposix ออนไลน์โดยใช้บริการ onworks.net