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

สำหรับคำถามเกี่ยวกับสคริปต์ที่เขียนขึ้นสำหรับเชลล์คำสั่ง Bash สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาด / ข้อผิดพลาดทางไวยากรณ์โปรดตรวจสอบด้วยโปรแกรม shellcheck (หรือในเซิร์ฟเวอร์ shellcheck เว็บที่ https://shellcheck.net) ก่อนโพสต์ที่นี่ คำถามเกี่ยวกับการใช้งานอินเทอร์แอคทีฟของ Bash นั้นมีแนวโน้มที่จะอยู่ในหัวข้อของผู้ใช้ขั้นสูงมากกว่าในสแต็คโอเวอร์โฟลว์

4
วิธีเรียกใช้คำสั่งก่อนที่สคริปต์ Bash จะออก
หากสคริปต์ Bash มีset -eและคำสั่งในสคริปต์ส่งกลับข้อผิดพลาดฉันจะล้างข้อมูลก่อนที่สคริปต์จะออกได้อย่างไร ตัวอย่างเช่น: #!/bin/bash set -e mkdir /tmp/foo # ... do stuff ... rm -r /tmp/foo ฉันจะแน่ใจได้อย่างไรว่า/tmp/fooถูกลบออกแม้ว่าคำสั่งใดคำสั่งหนึ่งจะ... do stuff ...ล้มเหลว
119 bash 

9
ฉันจะเรียกใช้ฟังก์ชันจากสคริปต์ในบรรทัดคำสั่งได้อย่างไร
ฉันมีสคริปต์ที่มีฟังก์ชันบางอย่าง ฉันสามารถเรียกใช้หนึ่งในฟังก์ชันโดยตรงจากบรรทัดคำสั่งได้หรือไม่? อะไรทำนองนี้? myScript.sh func()
119 linux  bash  scripting 

7
ตรวจสอบพื้นที่ว่างในดิสก์สำหรับพาร์ติชันปัจจุบันใน bash
ฉันกำลังเขียนโปรแกรมติดตั้งใน bash ผู้ใช้จะไปที่ไดเร็กทอรีเป้าหมายและรันสคริปต์การติดตั้งดังนั้นการดำเนินการแรกควรตรวจสอบว่ามีพื้นที่เพียงพอ ฉันรู้ว่า df จะรายงานระบบไฟล์ทั้งหมด แต่ฉันสงสัยว่ามีวิธีรับพื้นที่ว่างสำหรับพาร์ติชันที่ไดเร็กทอรีเป้าหมายอยู่หรือไม่ แก้ไข - คำตอบที่ฉันคิดขึ้นมา df $PWD | awk '/[0-9]%/{print $(NF-2)}' แปลกเล็กน้อยเนื่องจาก df ดูเหมือนจะจัดรูปแบบเอาต์พุตให้พอดีกับเทอร์มินัลดังนั้นด้วยชื่อจุดเมาท์แบบยาวเอาต์พุตจะถูกเลื่อนลงมาหนึ่งบรรทัด
119 linux  bash 


10
Bash script เพื่อคำนวณเวลาที่ผ่านไป
ฉันกำลังเขียนสคริปต์ใน bash เพื่อคำนวณเวลาที่ผ่านไปสำหรับการดำเนินการตามคำสั่งของฉันให้พิจารณา: STARTTIME=$(date +%s) #command block that takes time to complete... #........ ENDTIME=$(date +%s) echo "It takes $($ENDTIME - $STARTTIME) seconds to complete this task..." ฉันเดาว่าตรรกะของฉันถูกต้อง แต่ฉันก็พิมพ์ออกมาต่อไปนี้: "ใช้เวลาไม่กี่วินาทีในการทำงานนี้ให้เสร็จ ... " มีอะไรผิดปกติกับการประเมินสตริงของฉัน? ฉันเชื่อว่าตัวแปร bash ไม่ได้ถูกพิมพ์ฉันจะชอบถ้ามีวิธี "string to integer" ใน bash อย่างไรก็ตาม
119 linux  bash  shell 

5
แสดงวันที่และเวลาปัจจุบันโดยไม่มีเครื่องหมายวรรคตอน
ตัวอย่างเช่นฉันต้องการแสดงวันที่และเวลาปัจจุบันเป็นรูปแบบต่อไปนี้: yyyymmddhhmmss ฉันจะทำอย่างไร? ดูเหมือนว่ารูปแบบวันที่ส่วนใหญ่มาพร้อมกับ-, /, :ฯลฯ
118 bash  shell  date 


6
ไฟล์เนื้อหาลงในตัวแปร unix พร้อมขึ้นบรรทัดใหม่
ฉันมีไฟล์ข้อความ test.txt ที่มีเนื้อหาต่อไปนี้: text1 text2 และฉันต้องการกำหนดเนื้อหาของไฟล์ให้กับตัวแปร UNIX แต่เมื่อฉันทำสิ่งนี้: testvar=$(cat test.txt) echo $testvar ผลลัพธ์คือ: text1 text2 แทน text1 text2 ใครช่วยแนะนำวิธีแก้ปัญหานี้ให้ฉันได้ไหม
118 bash  unix 

2
/ bin / sh: apt-get: ไม่พบ
ฉันกำลังพยายามเปลี่ยน DockerFile ให้ทำงานกับแอสเปลล์ ฉันมีสคริปต์ทุบตีที่ฉันต้องการห่อในท่าเรือ Step 4: Wrap the script in a Docker container. The sample SDK we downloaded earlier contains an example of an action wrapped in a Docker container. In particular, the sample SDK includes a Dockerfile that builds the C program in client/example.c and installs the binary as …

11
ทดสอบว่าสตริงเป็นจำนวนเต็มที่ถูกต้องหรือไม่
ฉันกำลังพยายามทำบางสิ่งที่ธรรมดาพอ: แยกวิเคราะห์อินพุตของผู้ใช้ในเชลล์สคริปต์ หากผู้ใช้ระบุจำนวนเต็มที่ถูกต้องสคริปต์จะทำสิ่งหนึ่งและถ้าไม่ถูกต้องสคริปต์จะทำอย่างอื่น ปัญหาคือฉันไม่พบวิธีที่ง่าย (และสง่างามพอสมควร) ในการทำสิ่งนี้ - ฉันไม่ต้องการแยกมันออกจากถ่านโดยใช้ถ่าน ฉันรู้ว่ามันต้องง่าย แต่ฉันไม่รู้วิธี ฉันสามารถทำได้ในหลายสิบภาษา แต่ไม่ใช่ BASH! ในการวิจัยของฉันฉันพบสิ่งนี้: นิพจน์ทั่วไปเพื่อทดสอบว่าสตริงประกอบด้วยจำนวนจริงที่ถูกต้องในฐาน 10 หรือไม่ และมีคำตอบในนั้นที่พูดถึง regex แต่เท่าที่ฉันรู้นั่นคือฟังก์ชันที่มีอยู่ใน C (อื่น ๆ ) ยังคงมีสิ่งที่ดูเหมือนคำตอบที่ดีดังนั้นฉันจึงลองใช้ grep แต่ grep ไม่รู้ว่าจะทำอย่างไรกับมัน ฉันพยายาม -P ซึ่งในกล่องของฉันหมายถึงถือว่าเป็น PERL regexp - nada Dash E (-E) ไม่ทำงานเช่นกัน และไม่ได้ -F เพื่อความชัดเจนฉันกำลังลองสิ่งนี้โดยมองหาผลลัพธ์ใด ๆ - จากตรงนั้นฉันจะแฮ็กสคริปต์เพื่อใช้ประโยชน์จากสิ่งที่ฉันได้รับ (IOW ฉันคาดหวังว่าอินพุตที่ไม่สอดคล้องจะไม่ส่งคืนอะไรเลยในขณะที่บรรทัดที่ถูกต้องซ้ำ ๆ กัน) …

8
วิธีแก้ปัญหา“ คุณต้องติดตั้ง Ruby และ Sass และอยู่ใน PATH เพื่อให้งานนี้ทำงานได้” คำเตือน?
ฉันอยู่ระหว่างการตั้งค่า Mac เครื่องใหม่สำหรับการทำงาน ฉันได้ติดตั้ง Grunt & Grunt CLI ทั่วโลกแล้ว จากนั้นฉันก็npm installเข้าไปในโฟลเดอร์โครงการเพื่อติดตั้งการอ้างอิงทั้งหมด ยังไม่มีปัญหา แต่ทันทีที่ฉันพยายามเรียกใช้sass:distงานฉันได้รับคำเตือนนี้: Warning: You need to have Ruby and Sass installed and in your PATH for this task to work. More info: https://github.com/gruntjs/grunt-contrib-sass Use --force to continue. สิ่งที่ฉันเข้าใจคือฉันต้องติดตั้ง Ruby และ Sass ในระดับสากลมากขึ้นเพื่อให้งานนี้ทำงานได้ เนื่องจากฉันยังค่อนข้างใหม่ในการทำงานกับเทอร์มินัลฉันจึงทำการค้นหาอย่างรวดเร็วเพื่อค้นหาว่าPATHคืออะไร- ดูเหมือนว่าเส้นทางของระบบบางส่วน (ที่สามารถเปลี่ยนแปลงได้) ซึ่งมีการจัดเก็บข้อมูลสำคัญ นี่หมายความว่าฉันสามารถsudo grunt install …
117 ruby  macos  bash  terminal  sass 

10
วิธีตรวจสอบว่ามีอิมเมจ Docker พร้อมแท็กเฉพาะอยู่ในเครื่องหรือไม่?
ฉันต้องการทราบว่ามีอิมเมจ Docker ที่มีแท็กเฉพาะอยู่ในเครื่องหรือไม่ ฉันสบายดีโดยใช้สคริปต์ทุบตีหากไคลเอนต์ Docker ไม่สามารถทำสิ่งนี้ได้ เพียงเพื่อให้คำแนะนำสำหรับสคริปต์ทุบตีที่เป็นไปได้ผลลัพธ์ของการรันdocker imagesคำสั่งจะส่งคืนสิ่งต่อไปนี้: REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE rabbitmq latest e8e654c05c91 5 weeks ago 143.5 MB busybox latest 8c2e06607696 6 weeks ago 2.433 MB rabbitmq 3.4.4 a4fbaad9f996 11 weeks ago 131.5 MB
117 bash  docker 

26
ตรวจสอบจากเชลล์สคริปต์ว่าไดเร็กทอรีมีไฟล์หรือไม่
จากเชลล์สคริปต์ฉันจะตรวจสอบได้อย่างไรว่าไดเร็กทอรีมีไฟล์หรือไม่ สิ่งที่คล้ายกับสิ่งนี้ if [ -e /some/dir/* ]; then echo "huzzah"; fi; แต่จะใช้งานได้ถ้าไดเร็กทอรีมีไฟล์เดียวหรือหลายไฟล์ (ไฟล์ด้านบนใช้ได้กับไฟล์ 0 หรือ 1 ไฟล์เท่านั้น)
117 bash  unix  shell 

4
ตรวจสอบว่าเอาต์พุตของคำสั่งมีสตริงที่แน่นอนในเชลล์สคริปต์หรือไม่
ฉันกำลังเขียนเชลล์สคริปต์และฉันกำลังพยายามตรวจสอบว่าผลลัพธ์ของคำสั่งมีสตริงที่แน่นอนหรือไม่ ฉันคิดว่าฉันอาจต้องใช้ grep แต่ฉันไม่แน่ใจว่าจะทำอย่างไร มีใครรู้บ้าง?
117 bash  shell  grep 


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