การเขียนโปรแกรมใน bash - ตอนที่ 2

ส่วนที่สอง ของสิ่งนี้ มินิกวดวิชา การเขียนโปรแกรมใน ทุบตีที่เราเรียนรู้ที่จะใช้ รอบ และเครื่องมืออื่น ๆ ที่จะช่วยเราปรับปรุงฟังก์ชันการทำงานของ สคริปต์.

เงื่อนไข 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"]; แล้วทำลายไฟเสร็จ
ขอบคุณ Juan Carlos Ortiz!

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ยากปานกลาง dijo

    ฉันคิดว่าสิ่งนี้: tar -cf - ไดเรกทอรี | (cd / other / ไดเร็กทอรี tar -xvf -)

    จากนั้นจะมีลักษณะเป็น / another / directory / Directory
    ด้วยวิธีนี้ฉันบีบอัด Directory และคุณขยายขนาดในที่อื่น….

  2.   Miguel Angel dijo

    สวัสดี tuto ที่ดีฉันกำลังเรียนรู้เกี่ยวกับเรื่องนี้และทุกอย่างเรียบร้อยดีเพียง แต่ฉันไม่สามารถสร้างโปรแกรมที่ช่วยฉันได้เพื่อดูว่าคุณสามารถช่วยฉันได้ไหม

    ฉันต้องทำวงจรซึ่งจะได้รับเป็นพารามิเตอร์รายการไฟล์ต้นฉบับรายการนี้นำเฉพาะชื่อ (ไม่มีนามสกุล) เพื่อให้วงจรทำสิ่งต่อไปนี้ค้นหาชื่อที่ได้รับในไดเรกทอรี (ซึ่งเป็นชื่อที่เราจะค้นหา) แยกและคัดลอกไฟล์ (ชื่อเต็มมีนามสกุลแล้ว) และพา ธ สัมบูรณ์และสร้างในไฟล์ปลายทางอื่น

    จนถึงตอนนี้ฉันมีสิ่งต่อไปนี้:

    ขณะอ่านบรรทัด
    do
    เสียงสะท้อน -e "$ line"
    ค้นหา / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt จนถึงตอนนี้ฉันอ่านไฟล์ทุกบรรทัด แต่ฉันไม่สามารถค้นหาไฟล์นั้นและดึงข้อมูลได้หากคุณสามารถช่วยฉันได้ขอบคุณ ไชโย

  3.   พาเมล่ากาลาวิซ dijo

    ขอบคุณมากสำหรับการอุดหนุน🙂

  4.   มาริโอฮาเวียร์ dijo

    สวัสดี ... ฉันหวังว่าคุณจะช่วยได้ในการฝึกฝนครั้งต่อไป ... Unzip file ใน tgz ในไดเร็กทอรีที่ระบุนอกเหนือจากการระบุผู้ใช้และกลุ่มสำหรับไดเร็กทอรีและไฟล์ที่มีอยู่ทั้งหมดและกำหนดสิทธิ์ให้กับไฟล์และไดเร็กทอรี
    หมายเหตุ: ไฟล์ที่พร้อมสำหรับการอ่านและเขียน
    อนุญาตการดำเนินการไดเรกทอรี

  5.   จวนค dijo

    ARCH-DESTINATION เป็นตัวแปรที่เราต้องการบันทึกเส้นทางไฟล์ปลายทางบันทึกเพื่อความซ้ำซ้อน จากนั้นสำหรับตัวแปรนี้เราระบุตัวแปร DESTINATION ซึ่งด้านบนมีเส้นทางไปยังโฟลเดอร์ Documents และเราเพิ่ม "ตัวแปร" FILE ซึ่งมีชื่อของไฟล์ ถ้าไฟล์นั้นเป็นเช่น list.doc ตัวแปร ARCH-DESTINATION จะเท่ากับ /home/Usuario/Documentos/listado.doc

  6.   มาใช้ Linux กันเถอะ dijo

    เป็นบทความก่อนหน้านี้ คุณสามารถเข้าถึงได้ที่ http://usemoslinux.blogspot.com

    กอด! พอล.

  7.   ตรงไปตรงมา dijo

    สวัสดีตอนเช้าเพื่อนขอบคุณบล็อกของคุณดีมาก แต่ฉันไม่สามารถรับส่วนแรกของ Programming in Bash ได้ที่ไหนขอบคุณทักทาย

  8.   ไซโตะ มอร์เดรก dijo

    สองส่วนที่ไม่ธรรมดาขอแสดงความยินดีอย่างจริงใจ

    ยอดเยี่ยมเพียง

  9.   Fredy dijo

    ดี

  10.   ฮิวโก้ dijo

    สวัสดีฉันกำลังสร้างโปรแกรมด้วย 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 อย่าโหวตให้ฉันจากสคริปต์….

    คุณช่วยฉันได้ไหมขอบคุณ

  11.   ดาปามา 21 dijo

    สวัสดีฉันเริ่มเขียนสคริปต์เมื่อ 1 เดือนที่แล้วและต้องขอบคุณโพสต์สคริปต์ของคุณ ฉันจะทำประมาณ 15-20 ขอบคุณล่วงหน้า. แต่ตอนนี้ครูของเราได้ให้เราทำงานที่ทำให้ฉันหยุดนิ่ง เนื่องจากครูถามว่า:
    ส่งผ่านไดเร็กทอรีคัดลอกไปที่บ้านของคุณไฟล์ทั้งหมดที่อยู่ในไดเร็กทอรีนั้นตามตัวอักษรและตั้งชื่อไฟล์ file1 file2 ฯลฯ ... ฯลฯ ...
    ตอนนี้ฉันอยู่ในช่วงเวลาของการค้นหาหรือค้นหาฉันต้องการใช้ find แต่เมื่อให้รหัสข้อผิดพลาดเช่นฉันใส่ผ่าน dev null การอนุญาตถูกปฏิเสธจากนั้นฉันก็เข้าใจผิดและระบุตำแหน่งที่ฉันอยู่ที่นี่:
    ค้นหา $ 1 | grep "/ $ {1} \ $"
    แต่แน่นอนว่าพวกเขาทั้งหมดออกมา ...
    ขอบคุณมากถ้าคุณอ่าน
    หากคุณสามารถช่วยฉันได้ก็จะเป็นประโยชน์อย่างยิ่ง

  12.   luis dijo

    ฉันต้องการให้คุณช่วยฉันด้วย
    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
    คุณต้องแสดงความสามารถพิเศษที่คุณกำลังศึกษาค่าใช้จ่ายของเงินบำนาญค่าเริ่มต้นและจำนวนเงินทั้งหมดที่ต้องจ่าย

  13.   Charly dijo

    สวัสดีมีใครช่วยฉันได้บ้าง
    ฉันต้องการ«ขอสามคำด้วยแป้นพิมพ์และแสดงตามลำดับตัวอักษรจาก A ถึง z »
    ในภาษา Bash หรือ sh สำหรับ LINUX porfaborrrr