คำถามติดแท็ก arithmetic

แท็กนี้มีไว้สำหรับทุกสิ่งที่เกี่ยวข้องกับการดำเนินการทางคณิตศาสตร์ ดังนั้นหากคุณต้องการถามคำถามเกี่ยวกับการคำนวณในʻawk` หรือหากคุณมีคำถามเกี่ยวกับ "bc" นี่คือแท็กที่เหมาะสมที่จะใช้

16
วิธีการคำนวณจำนวนเต็มและลอยในทุบตีหรือภาษา / กรอบอื่น ๆ ?
การใช้echo "20+5"ข้อความจะสร้างข้อความ " 20+5" อย่างแท้จริง ฉันสามารถใช้คำสั่งใดในการรับผลรวมตัวเลข25ในกรณีนี้ นอกจากนี้วิธีที่ง่ายที่สุดในการทำเพียงแค่ใช้ bash สำหรับจุดลอยคืออะไร ตัวอย่างเช่นecho $((3224/3807.0))พิมพ์0:( ฉันกำลังมองหาคำตอบโดยใช้เชลล์คำสั่งพื้นฐาน ('บรรทัดคำสั่ง') เองหรือผ่านการใช้ภาษาที่มีให้จากบรรทัดคำสั่ง

18
มีวิธีการรับ min, max, มัธยฐานและค่าเฉลี่ยของรายการตัวเลขในคำสั่งเดียวหรือไม่?
ฉันมีรายการตัวเลขในไฟล์หนึ่งรายการต่อบรรทัด ฉันจะรับค่าต่ำสุดสูงสุดค่ามัธยฐานและค่าเฉลี่ยได้อย่างไร ฉันต้องการใช้ผลลัพธ์ในสคริปต์ทุบตี แม้ว่าสถานการณ์ปัจจุบันของฉันจะเป็นจำนวนเต็ม แต่วิธีแก้ปัญหาสำหรับเลขทศนิยมจะเป็นประโยชน์ในบรรทัด
93 bash  awk  arithmetic  bc 

6
เครื่องหมายวงเล็บในคณิตศาสตร์ expr: 3 * (2 + 1)
expr ดูเหมือนจะไม่ชอบวงเล็บ (ใช้ในคณิตศาสตร์เพื่อจัดลำดับความสำคัญผู้ประกอบการที่ชัดเจน): expr 3 * (2 + 1) bash: syntax error near unexpected token `(' วิธีแสดงโอเปอเรเตอร์ที่สำคัญในการทุบตี?

3
Bash: double เท่ากับ vs -eq
ฉันทำการเปรียบเทียบจำนวนเต็มในทุบตี (พยายามดูว่าผู้ใช้ทำงานเป็น root) และฉันพบสองวิธีแตกต่างกัน: สองเท่ากับ if [ $UID == 0 ] then fi -eq if [ $UID -eq 0 ] then fi ผมเข้าใจว่าไม่มี> = หรือ <= ในทุบตีเพียง -GE และเลอจึงเป็นเหตุผลว่าทำไมมี==ถ้ามี-eq? มีความแตกต่างในวิธีการเปรียบเทียบทั้งสองด้านหรือไม่?
47 bash  shell  arithmetic 

6
วิธีสร้างลำดับด้วยเลขศูนย์นำหน้าโดยใช้การขยายรั้ง
เมื่อฉันใช้สิ่งต่อไปนี้ฉันได้รับผลลัพธ์ตามที่คาดไว้: $ echo {8..10} 8 9 10 ฉันจะใช้การขยายรั้งนี้ในวิธีที่ง่ายเพื่อให้ได้ผลลัพธ์ต่อไปนี้ได้อย่างไร $ echo {8..10} 08 09 10 ตอนนี้ฉันสามารถใช้สิ่งนี้ได้seq(ไม่ลอง) แต่นั่นไม่ใช่สิ่งที่ฉันกำลังมองหา ข้อมูลที่มีประโยชน์อาจเป็นได้ว่าฉันถูก จำกัด รุ่น bash นี้ (หากคุณมีzshวิธีแก้ไข แต่ไม่มีbashวิธีแก้ไขโปรดแชร์ด้วย) $ bash -version GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)

4
ฉันจะลบเลขศูนย์นำออกจากผลลัพธ์ของ 'วันที่' หรือหลีกเลี่ยงการตีความเลขฐานแปดของเลขทศนิยมดังกล่าวได้อย่างไร
ฉันมีสิ่งนี้: date +"%H hours and %M minutes" ฉันใช้เทศกาลเพื่อบอกว่ามัน .. แต่มันบอกว่า: "ศูนย์เก้าชั่วโมง" .. ฉันอยากให้มันพูดว่า "เก้าชั่วโมง"! แต่วันที่ให้ฉัน 09 เสมอ ... ดังนั้นฉันสงสัยว่า bash สามารถทำให้กลายเป็นเพียงแค่ 9 ได้หรือไม่? ในสคริปต์ที่ซับซ้อนฉันพยายาม printf %d 09 แต่มันล้มเหลว .. ไม่ใช่เลขฐานแปด :( ความคิดใด ๆ
37 bash  shell  date  arithmetic 

2
เครื่องหมายดอลลาร์ตามด้วยเครื่องหมายวงเล็บเหลี่ยม $ […] หมายถึงทุบตีอย่างไร
ปรากฏว่าการดำเนินการขยายตัวทางคณิตศาสตร์เช่นเดียวกับ$[expr] $((expr))แต่ฉันไม่พบการกล่าวถึง$[ในคู่มือทุบตี คำสั่งนี้ไม่ให้ผลลัพธ์: gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\[' ตัวดำเนินการนี้คืออะไรและมีพฤติกรรมที่เป็นมาตรฐานได้ทุกที่ รุ่น bash ของฉัน: GNU bash, รุ่น 3.2.51 (1) - ปล่อย (x86_64-apple-darwin13)
34 bash  arithmetic 

8
ทำคณิตศาสตร์อย่างง่ายบนบรรทัดคำสั่งโดยใช้ฟังก์ชัน bash: $ 1 หารด้วย $ 2 (อาจใช้ bc)
บางครั้งฉันต้องหารจำนวนหนึ่งด้วยอีก มันจะดีมากถ้าฉันสามารถกำหนดฟังก์ชัน bash สำหรับสิ่งนี้ได้ จนถึงตอนนี้ฉันถูกบังคับให้ใช้นิพจน์เช่น echo 'scale=25;65320/670' | bc แต่มันจะดีมากถ้าฉันสามารถกำหนดฟังก์ชั่น. bashrc ที่ดูเหมือน divide () { bc -d $1 / $2 }

5
ตรวจสอบว่า $ REPLY อยู่ในช่วงตัวเลขหรือไม่
ฉันเขียนเชลล์สคริปต์สำหรับ Linux โดยใช้ Bash เพื่อแปลไฟล์วิดีโอใด ๆ ให้เป็น MP4 สำหรับสิ่งที่ฉันใช้avconvกับlibvorbisเสียง ภายในสคริปต์ของฉันฉันมีคำถามสำหรับผู้ใช้: read -p "- Audio Quality [scale from -2 to 10] ? " if [ -n "$REPLY" ] ; then ABITRATE="-aq $REPLY" fi สตริง "ABITRATE" ของฉันเข้าสู่avconvบรรทัดคำสั่งสุดท้าย แต่ฉันต้องการให้ผู้ใช้มีโอกาสตอบคำถามนั้นด้วยค่าเป็น Kb (Kilobit) และแปลเป็นมาตราส่วนที่libvorbisใช้ "สเกลจาก -2 ถึง 10" คือ: Quality Kbit/s Normalization ----------------------------- -2 ~32 …

5
สร้างลำดับของตัวเลขหนึ่งรายการต่อหนึ่งบรรทัดในไฟล์
มีวิธีการสร้างออกมาจากอากาศบางไฟล์ที่เป็นลำดับของตัวเลขเริ่มต้นที่จำนวนที่กำหนดหนึ่งต่อบรรทัด? สิ่งที่ต้องการ magic_command start 100 lines 5 > b.txt แล้วb.txtจะเป็น 100 101 102 103 104

6
วิธีเพิ่มตัวแปรทางคณิตศาสตร์ในสคริปต์
ฉันต้องการสะสมขนาดบรรทัดของไฟล์จำนวนหนึ่งที่มีอยู่ในโฟลเดอร์ ฉันได้เขียนสคริปต์ต่อไปนี้: let a=0 let num=0 for i in folder/* do num=`cat $i | wc -l` a=$a+$num done echo $a สิ่งที่ฉันได้รับในตอนท้ายของสคริปต์คือ 123 + 234 + 432 + ... และไม่ใช่ผลลัพธ์ของการดำเนินการทางคณิตศาสตร์ของการเพิ่ม


7
ไบนารีฐานสิบหกและทศนิยมในเชลล์สคริปต์
ฉันมีบริบทที่ฉันต้องแปลงเลขฐานสองเป็นเลขฐานสิบหกและทศนิยมและ viceversa ในเชลล์สคริปต์ มีคนแนะนำฉันเป็นเครื่องมือสำหรับสิ่งนี้ได้ไหม

3
การเปรียบเทียบจำนวนเต็ม: การแสดงออกทางคณิตศาสตร์หรือการแสดงออกตามเงื่อนไข
ใน Bash คุณสามารถเปรียบเทียบจำนวนเต็มสองจำนวนได้โดยใช้นิพจน์เงื่อนไข arg1 OP arg2 OP เป็นหนึ่ง-eq, -ne, -lt, -le, หรือ-gt -geตัวดำเนินการเลขคณิตเหล่านี้จะคืนค่าจริงถ้าarg1เท่ากับ, ไม่เท่ากับ, น้อยกว่า, น้อยกว่าหรือเท่ากับ, มากกว่าหรือมากกว่าหรือเท่ากับarg2ตามลำดับ Arg1และarg2อาจเป็นจำนวนเต็มบวกหรือลบ หรือการแสดงออกทางคณิตศาสตร์: <= >= < > การเปรียบเทียบ == != ความเสมอภาคและความไม่เท่าเทียม ทำไมเรามีสองวิธีที่แตกต่างกันในการเปรียบเทียบจำนวนเต็มสองตัว? จะใช้เมื่อใด ตัวอย่างเช่น[[ 3 -lt 2 ]]ใช้นิพจน์เงื่อนไขและ(( 3 < 2 ))ใช้นิพจน์ทางคณิตศาสตร์ ทั้งคู่คืนค่า 0 เมื่อการเปรียบเทียบเป็นจริง เมื่อเปรียบเทียบจำนวนเต็มสองจำนวนทั้งสองวิธีสามารถใช้แทนกันได้หรือไม่ ถ้าใช่ทำไม Bash มีสองวิธีมากกว่าหนึ่ง?

4
bash -e ออกเมื่อให้หรือ expr ประเมินเป็น 0
ฉันมี bash script ที่ตั้งค่า -e ดังนั้นสคริปต์จะออกจากสถานะการออกใด ๆ ! = 0 ฉันพยายามทำเลขคณิตพื้นฐานของเชลล์ที่กำหนดให้กับตัวแปรและบางครั้งนิพจน์มีค่าเท่ากับ 0 ซึ่งทำให้สถานะการออกของคำสั่ง let หรือ expr เป็น "1" นี่คือตัวอย่าง: #!/bin/bash -ex echo "Test 1" Z=`expr 1 - 1` || true echo "Z will print" let "A=4 - 4" echo "A WILL NEVER PRINT $A" Y=`expr 1 - 1` echo "Y …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.