ส่วนที่สอง ของสิ่งนี้ มินิกวดวิชา การเขียนโปรแกรมใน ทุบตีที่เราเรียนรู้ที่จะใช้ รอบ และเครื่องมืออื่น ๆ ที่จะช่วยเราปรับปรุงฟังก์ชันการทำงานของ สคริปต์. |
เงื่อนไข If
ฟังก์ชันของ If คือใช้ตัวกรองและดำเนินการหรืองานสำหรับตัวกรองแต่ละประเภทที่ใช้ โครงสร้างมีดังนี้:
ถ้า [เงื่อนไข]; จากนั้นคำสั่ง elif [เงื่อนไข]; จากนั้นคำสั่งอื่น ๆ คำสั่ง fi
ตัวอย่างจะแสดงถัดจาก For loop ในส่วนที่เกี่ยวข้อง
ซิโคลอส
1. ในขณะที่: มันจะดำเนินการคำสั่งทั้งหมดที่ระบุระหว่าง do และ done ตราบเท่าที่เงื่อนไขเป็นจริง หากเราต้องการส่งผ่านตัวดำเนินการเปรียบเทียบไปยังนิพจน์จะต้องอยู่ในวงเล็บ
ในขณะที่ CONDITION / COMMAND ทำคำสั่ง
ตัวอย่าง: ตารางการคูณของตัวเลข
#! / bin / bash X = 1 echo "ป้อนตัวเลขและกด ENTER" อ่าน M # ลูปควบคุมว่า X น้อยกว่าหรือเท่ากับ 10 ในขณะที่ [$ X –le 10] ทำ # ใน R เราเก็บการคูณของ X ด้วย MR = $ [X * M] # การคูณนี้พิมพ์บนหน้าจอ echo "$ M * $ X = $ R" # ด้วยการปล่อยให้เราเพิ่มค่า X ทีละ 1 หน่วยให้ X = $ X + 1 เสร็จสิ้น
2. สำหรับ: เก็บรายการองค์ประกอบในตัวแปรซึ่งจะใช้เพื่อดำเนินการบางอย่างในแต่ละรอบ
สำหรับ VARIABLE ใน ELEMENTS ทำคำสั่งเสร็จแล้ว
ตัวอย่าง: โปรแกรมที่คัดลอกไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งแทนที่ไฟล์เก่า
# / bin / bash # เราสร้างไดเร็กทอรีต้นทางและปลายทาง ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # เราวางตำแหน่งของตัวเองในซีดีต้นทาง $ ORIGIN # จากไฟล์ทั้งหมดเราต้องการเพียงไฟล์ที่เป็น # เรียก FILE สำหรับ FILE ใน * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f กรองไฟล์ปกติให้เราเนื่องจากไดเรกทอรีเป็น # สิ่งที่ดีสำหรับเรา –Nt กรอง # ไฟล์ที่ "ใหม่กว่า" ออกไป # ไฟล์ที่พบในโฟลเดอร์ปลายทางถ้า [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; แล้ว echo "กำลังคัดลอก $ FILE ... " # เราคัดลอกไฟล์ด้วย cp cp $ FILE $ ARCH-DESTINATION fi เสร็จแล้ว # เรา cd เพื่อออกจากโฟลเดอร์ต้นทาง cd
อีกตัวอย่างหนึ่ง: สคริปต์ที่ผู้ใช้ต้องเดาตัวเลขสุ่มที่คอมพิวเตอร์สร้างขึ้น
# / bin / bash # หมายเลขสุ่มถูกสร้างขึ้นตั้งแต่ 1 ถึง 10 ซึ่งจะถูก # บันทึกไว้ใน RANDOM RANDOM = $ [$ RANDOM% 10 + 1] ในขณะที่ [1] ทำ echo –n“ ป้อนตัวเลข:“ อ่าน NUM # เปรียบเทียบว่าหมายเลขที่ผู้ใช้เลือกคือ # เท่ากับ RANDOM หรือไม่ อย่าลืมใช้ $ เพื่อประเมิน #values ของตัวแปรไม่ใช่ชื่อของตัวแปรหาก [“ $ NUM –eq“ $ RANDOM”]; แล้วสะท้อนว่า "คุณเข้าใจถูกแล้ว!" #break อนุญาตให้สิ้นสุดลูปขณะหยุดพัก # ถ้าจำนวนน้อยกว่า RANDOM elif [“ $ NUM –gt“ $ RANDOM”]; จากนั้นสะท้อนว่า "มันน้อยกว่า" "ถ้าไม่เป็นมากกว่า RANDOM อื่น ๆ จะสะท้อนว่า" มันยิ่งใหญ่กว่า "
3. จนกระทั่ง: มีโครงสร้างคล้ายกับ While ค่อนข้างมากยกเว้นว่าโค้ดจะรันเสมอในขณะที่การประเมินเงื่อนไขเป็นลบนั่นคือโปรแกรมจะยังคงดำเนินการต่อไป
จนกว่า CONDITION / COMMAND จะทำคำสั่งเสร็จ
ตัวอย่าง: พิมพ์ตัวเลข 10-20 จากมากไปหาน้อย
#! / bin / bash CONT = 20 # ตราบใดที่ตัวนับมีค่าน้อยกว่า 10 (-lt,“ lower #than”) รหัสจะถูกเรียกใช้จนถึง [$ CONT -lt 10]; ทำ echo "COUNTER $ CONT" #A CONT ถูกลบด้วยหน่วยให้ CONT- = 1 เสร็จสิ้น
4. เลือก: รอบสุดท้ายนี้เป็นกรณีพิเศษเนื่องจากโดยทั่วไปจะใช้เพื่อสร้างเมนูอย่างรวดเร็ว มันทำงานคล้ายกับ For loop
เลือก VARIABLE ใน LIST ของคำสั่งที่ทำ
ตัวอย่าง: ให้ผู้ใช้สามารถดำเนินการต่อหรือสิ้นสุดสคริปต์
#! / bin / bash #item เป็นตัวแปรที่ตอบสนองต่อสิ่งที่ #user เลือกดำเนินการต่อและเสร็จสิ้นเป็น # ตัวเลือกที่พร้อมใช้งานสำหรับเขาแม้ว่าจะสามารถเพิ่มตัวเลือกอื่น ๆ ได้อีก # รายการที่เลือกในดำเนินการต่อเสร็จสิ้นให้ทำ # หากผู้ใช้เลือก สิ้นสุดโปรแกรมจากนั้นเมื่อหยุดพักเราจะออกจากวงจร ถ้า [$ item = "Finish"]; แล้วทำลายไฟเสร็จ
ฉันคิดว่าสิ่งนี้: tar -cf - ไดเรกทอรี | (cd / other / ไดเร็กทอรี tar -xvf -)
จากนั้นจะมีลักษณะเป็น / another / directory / Directory
ด้วยวิธีนี้ฉันบีบอัด Directory และคุณขยายขนาดในที่อื่น….
สวัสดี tuto ที่ดีฉันกำลังเรียนรู้เกี่ยวกับเรื่องนี้และทุกอย่างเรียบร้อยดีเพียง แต่ฉันไม่สามารถสร้างโปรแกรมที่ช่วยฉันได้เพื่อดูว่าคุณสามารถช่วยฉันได้ไหม
ฉันต้องทำวงจรซึ่งจะได้รับเป็นพารามิเตอร์รายการไฟล์ต้นฉบับรายการนี้นำเฉพาะชื่อ (ไม่มีนามสกุล) เพื่อให้วงจรทำสิ่งต่อไปนี้ค้นหาชื่อที่ได้รับในไดเรกทอรี (ซึ่งเป็นชื่อที่เราจะค้นหา) แยกและคัดลอกไฟล์ (ชื่อเต็มมีนามสกุลแล้ว) และพา ธ สัมบูรณ์และสร้างในไฟล์ปลายทางอื่น
จนถึงตอนนี้ฉันมีสิ่งต่อไปนี้:
ขณะอ่านบรรทัด
do
เสียงสะท้อน -e "$ line"
ค้นหา / home / myuser / dof "$ line" -exec readlink -f {};
done <testlist.txt จนถึงตอนนี้ฉันอ่านไฟล์ทุกบรรทัด แต่ฉันไม่สามารถค้นหาไฟล์นั้นและดึงข้อมูลได้หากคุณสามารถช่วยฉันได้ขอบคุณ ไชโย
ขอบคุณมากสำหรับการอุดหนุน🙂
สวัสดี ... ฉันหวังว่าคุณจะช่วยได้ในการฝึกฝนครั้งต่อไป ... Unzip file ใน tgz ในไดเร็กทอรีที่ระบุนอกเหนือจากการระบุผู้ใช้และกลุ่มสำหรับไดเร็กทอรีและไฟล์ที่มีอยู่ทั้งหมดและกำหนดสิทธิ์ให้กับไฟล์และไดเร็กทอรี
หมายเหตุ: ไฟล์ที่พร้อมสำหรับการอ่านและเขียน
อนุญาตการดำเนินการไดเรกทอรี
ARCH-DESTINATION เป็นตัวแปรที่เราต้องการบันทึกเส้นทางไฟล์ปลายทางบันทึกเพื่อความซ้ำซ้อน จากนั้นสำหรับตัวแปรนี้เราระบุตัวแปร DESTINATION ซึ่งด้านบนมีเส้นทางไปยังโฟลเดอร์ Documents และเราเพิ่ม "ตัวแปร" FILE ซึ่งมีชื่อของไฟล์ ถ้าไฟล์นั้นเป็นเช่น list.doc ตัวแปร ARCH-DESTINATION จะเท่ากับ /home/Usuario/Documentos/listado.doc
เป็นบทความก่อนหน้านี้ คุณสามารถเข้าถึงได้ที่ http://usemoslinux.blogspot.com
กอด! พอล.
สวัสดีตอนเช้าเพื่อนขอบคุณบล็อกของคุณดีมาก แต่ฉันไม่สามารถรับส่วนแรกของ Programming in Bash ได้ที่ไหนขอบคุณทักทาย
สองส่วนที่ไม่ธรรมดาขอแสดงความยินดีอย่างจริงใจ
ยอดเยี่ยมเพียง
ดี
สวัสดีฉันกำลังสร้างโปรแกรมด้วย CASE สิ่งที่ฉันต้องการให้ทำและฉันไม่รู้วิธีเช่น:
echo เลือกตัวเลือก:
เสียงสะท้อน
เสียงสะท้อน 1. ตัวเลือก 1
เสียงสะท้อน 2. ตัวเลือก 2
เสียงสะท้อน 3. ตัวเลือก 3
เสียงสะท้อน 4. ตัวเลือก 4
เสียงสะท้อน 5. ออก
อ่าน var
กรณี "$ var" ใน
1)
echo "คุณเลือกตัวเลือก 1"
;;
2)
echo "คุณเลือกตัวเลือก 2"
;;
3)
ขว้างออก "… .. "
;;
4)
โยนออกไป "…."
;;
5)
ขว้างออก "…"
;;
*)
echo "ผิดตัวเลือก"
;;
ว่า C
ตกลงสิ่งที่ฉันไม่รู้จะทำอย่างไรก็คือเมื่อฉันเลือกตัวเลือก 4 ซึ่งจะออกให้ถามว่าฉันต้องการออกจริงๆหรือไม่และให้ 2 ตัวเลือก Y & N
และอีกอย่างคือเมื่อคุณเลือกอย่างอื่นที่ไม่ใช่หมายเลข 1..5 อย่าโหวตให้ฉันจากสคริปต์….
คุณช่วยฉันได้ไหมขอบคุณ
สวัสดีฉันเริ่มเขียนสคริปต์เมื่อ 1 เดือนที่แล้วและต้องขอบคุณโพสต์สคริปต์ของคุณ ฉันจะทำประมาณ 15-20 ขอบคุณล่วงหน้า. แต่ตอนนี้ครูของเราได้ให้เราทำงานที่ทำให้ฉันหยุดนิ่ง เนื่องจากครูถามว่า:
ส่งผ่านไดเร็กทอรีคัดลอกไปที่บ้านของคุณไฟล์ทั้งหมดที่อยู่ในไดเร็กทอรีนั้นตามตัวอักษรและตั้งชื่อไฟล์ file1 file2 ฯลฯ ... ฯลฯ ...
ตอนนี้ฉันอยู่ในช่วงเวลาของการค้นหาหรือค้นหาฉันต้องการใช้ find แต่เมื่อให้รหัสข้อผิดพลาดเช่นฉันใส่ผ่าน dev null การอนุญาตถูกปฏิเสธจากนั้นฉันก็เข้าใจผิดและระบุตำแหน่งที่ฉันอยู่ที่นี่:
ค้นหา $ 1 | grep "/ $ {1} \ $"
แต่แน่นอนว่าพวกเขาทั้งหมดออกมา ...
ขอบคุณมากถ้าคุณอ่าน
หากคุณสามารถช่วยฉันได้ก็จะเป็นประโยชน์อย่างยิ่ง
ฉันต้องการให้คุณช่วยฉันด้วย
1. - ป้อนตัวเลขบนแป้นพิมพ์และแสดงตัวเลขสองครั้งและเพิ่มเป็นสามเท่าบนหน้าจอ 2.- สร้างโปรแกรมเพื่อตัดสินใจว่าตัวเลขที่ป้อนโดยแป้นพิมพ์หารด้วย 3 ได้หรือไม่
3.- สร้างโปรแกรมเพื่อหาผลรวมของ: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
4.- สร้างโปรแกรมเพื่อหาผลรวม 1 + 3 + 5 + 7 + 9 ··· + (2n + 1)
5. - สร้างโปรแกรมที่พิมพ์คำว่า Linux บนหน้าจอ 10 ครั้ง
6. - สร้างโปรแกรมที่พิมพ์คำว่า Linux บนหน้าจอตามจำนวนครั้งที่ผู้ใช้ระบุ
7. - ป้อนจำนวนเป็นชั่วโมงและแปลงเป็นนาทีและวินาที
8. - คำนวณพื้นที่ของสามเหลี่ยม
9. - ป้อนตัวเลขบนแป้นพิมพ์จากนั้นถ้าคุณป้อน 2 มันควรจะเป็นกำลังสอง 3 ลูกบาศก์ 4 ไปที่สี่และสูงถึง 6
10- คำนวณเงินบำนาญที่นักเรียนต้องจ่ายต้องป้อนรหัสพิเศษและวันที่ค้างชำระ:
รหัส
พิเศษ
AMOUNT
ระหว่างต่อวัน
1
การคำนวณ
160
1
2
การพยาบาล
150
1.5
3
เลขานุการ
140
2
4
การท่องเที่ยว
180
2.5
5
การบัญชี
160
1
คุณต้องแสดงความสามารถพิเศษที่คุณกำลังศึกษาค่าใช้จ่ายของเงินบำนาญค่าเริ่มต้นและจำนวนเงินทั้งหมดที่ต้องจ่าย
สวัสดีมีใครช่วยฉันได้บ้าง
ฉันต้องการ«ขอสามคำด้วยแป้นพิมพ์และแสดงตามลำดับตัวอักษรจาก A ถึง z »
ในภาษา Bash หรือ sh สำหรับ LINUX porfaborrrr