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

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

1
จะเก็บสคริปต์ cronjob ได้ที่ไหน
ฉันไม่ต้องการเก็บไว้ใน/home/myusernameสารบบของฉัน มีวิธีปฏิบัติที่ดีที่สุดในการจัดเก็บเชลล์สคริปต์ของคุณสำหรับ cronjobs หรือไม่? ที่ระดับรูต? ฉันใช้เซิร์ฟเวอร์อูบุนตู 12.04 ตอนนี้

6
เรียกใช้สคริปต์ใน OS X 10.6 บนการเชื่อมต่อเครือข่าย (เช่น /etc/network/if-up.d/)
มีวิธีใดบ้างในการรันสคริปต์เมื่อมีส่วนต่อประสานเครือข่ายเกิดขึ้นใน Mac OS X ฉันพยายามวางสคริปต์ชื่อ ip-up ใน / etc / ppp แต่ดูเหมือนว่าจะไม่ทำงานเมื่อฉันตัดการเชื่อมต่อและเชื่อมต่อกับเครือข่ายไร้สายอีกครั้ง ฉันไม่ต้องการทำงาน cron เพื่อตรวจสอบสถานะเครือข่ายที่มีการเปลี่ยนแปลงอยู่ตลอดเวลา ในลินุกซ์ distros บางตัวคุณสามารถทำได้โดยใส่สคริปต์ใน /etc/network/if-up.d/ มีอะไรที่คล้ายกันสำหรับ Mac OS X หรือไม่?



3
วิธีการพิมพ์อักขระบรรทัดใหม่ด้วย echo
ผมถ่ายโอนข้อมูลสตริงด้วยเช่นนี้hexdump 2031 3334 2e30 0a32 2032 3331 302e 000aเป็นที่ชัดเจนว่า0x0aเป็นอักขระบรรทัดใหม่ แต่เมื่อฉันพยายามที่จะสะท้อนสตริงนี้ออกมาฉันมักจะได้รับ1 430.2 2 13.0- บรรทัดใหม่จะถูกแทนที่ด้วยช่องว่างแม้ฉันจะใช้-eธง อาจมีปัญหาอะไร? tailing \0ทำลายผลลัพธ์หรือไม่? มีทางเลือกอื่นในการพิมพ์0x0aบรรทัดใหม่หรือไม่? ขอขอบคุณและขอแสดงความนับถือ.


2
ทำไมถึงได้ [[: ไม่พบเมื่อใช้งานสคริปต์]
ฉันพยายามเขียนสคริปต์ที่ต้องตรวจสอบว่ามีไฟล์อยู่หรือไม่ ในคอนโซลฉันเขียน if [[ -a /path/to/file.txt ]]; then echo "not mod"; else echo "mod"; fi และฉันได้รับ not mod แต่เมื่อฉันเขียนสคริปต์เพื่อทำสิ่งเดียวกัน: #!/bin/sh if [[ -a /path/to/file.txt ]]; then echo "not mod"; else echo "mod"; fi แล้วรันสคริปต์ฉันได้รับสิ่งนี้: ./ex.sh: 2: [[: not found mod ฉันบันทึกสคริปต์ในไดเรกทอรีปัจจุบันและตั้งชื่อเป็น ex.sh จากนั้นฉันตรวจสอบให้แน่ใจว่าสามารถเรียกใช้งานได้ ในการเรียกใช้สคริปต์ฉันต้องทำสิ่งนี้: ./ex.sh ทำไมฉันถึงได้รับปัญหานี้? ฉันลองมาหลายอย่างแล้ว: if [ -a …

3
Bash shell: แสดงรายการไฟล์ทุกประเภท. png หรือ. PNG?
ในสคริปต์ทุบตีฉันจะพูดว่า 'สำหรับไฟล์ประเภท. png หรือ .PNG ทั้งหมดได้อย่างไร' ฉันกำลังพยายาม: for i in (`ls *.PNG` && `ls *.png`) แต่ได้รับข้อผิดพลาดทางไวยากรณ์

3
ฉันจะเปิดใช้งาน bash script จาก Finder ใน OS X ได้อย่างไร
ฉันจะเปิดใช้งาน bash script จาก Finder ใน OS X ได้อย่างไร ฉันทำงานที่ CLI แต่สคริปต์เล็ก ๆ ของฉันไม่ได้เป็นที่รักของเพื่อนร่วมงานที่ผูกกับ GUI ของฉัน

1
ฉันสามารถ "ส่งออก" นามแฝงไปยัง SHELL ที่เรียกใช้สคริปต์ได้หรือไม่
ฉันพยายามเขียนสคริปต์อรรถประโยชน์ที่กำหนดนามแฝงบางอย่าง My SHELL คือtcsh(ไม่สามารถเปลี่ยนแปลงได้) ฉันพยายามต่อไปนี้ #!/bin/tcsh alias log 'less ~/logs/log.`date '+%Y%m%d'`'' จากนั้นฉันก็รันแบบนี้: ./myscript log ผลลัพธ์ที่ฉันได้รับคือ: log: Command not found. โดยธรรมชาติถ้าฉันเรียกใช้เช่นนี้: source myscript log ทุกอย่างปกติดี. วิธีใดที่จะทำได้โดยไม่ต้องระบุsource ...?

3
จะรันเชลล์สคริปต์เมื่อเริ่มต้นได้อย่างไร
ฉันสร้างสคริปต์เพื่อเริ่มต้นเซิร์ฟเวอร์ (คำถามแรกของฉัน) ตอนนี้ฉันต้องการให้มันทำงานในการบูตระบบและเริ่มเซิร์ฟเวอร์ที่กำหนดไว้ ฉันควรทำอย่างไรเพื่อให้เสร็จ การค้นพบของฉันบอกว่าฉันวางไฟล์นี้ไว้ใน/etc/init.dตำแหน่งและมันจะทำงานเมื่อระบบจะบู๊ต แต่ฉันไม่สามารถเข้าใจว่าอาร์กิวเมนต์แรกของการเริ่มต้นจะเป็นstartอย่างไร นี่คือที่กำหนดไว้ล่วงหน้าเพื่อใช้startเป็น$1? หากฉันต้องการมีกรณีstartallที่จะเริ่มต้นเซิร์ฟเวอร์ทั้งหมดในสคริปต์แล้วตัวเลือกที่ฉันสามารถจัดการคืออะไร? สคริปต์ของฉันเป็นเช่นนี้: #!/bin/bash case "$1" in start) start ;; stop) stop ;; restart) $0 stop $0 start ;; *) echo "usage: $0 (start|stop|restart)" ;; esac

2
สคริปต์ Unix: รอจนกว่าไฟล์จะมีอยู่
ฉันต้องการสคริปต์ที่จะรอให้ (examplefile.txt) ปรากฏในไดเรกทอรี / tmp และเมื่อพบว่าหยุดโปรแกรมไม่เช่นนั้นให้พักไฟล์จนกว่าจะพบตำแหน่ง จนถึงตอนนี้ฉันมี: ถ้า [! -f /tmp/examplefile.txt] แล้วก็

5
วิธีการทดสอบว่าตัวแปรเท่ากับจำนวนในเปลือก
ฉันมีเชลล์สคริปต์นี้ซึ่งใช้งานไม่ได้ การป้อนข้อมูล: Server_Name=1 if [ $Server_Name=1 ]; then echo Server Name is 1 else echo Server Name is not 1 fi เอาท์พุท: Server Name is 1 แต่ถ้าฉันเปลี่ยนServer_Name=2ผลลัพธ์คือ: Server Name is 1 เมื่อฉันเปลี่ยนServer_Nameไปผมต้องการที่จะพูดได้:2Server Name is 2 ฉันรู้ว่ามันเป็นif [ $Server_Name=1 ];ส่วนหนึ่ง ฉันจะแก้ไขได้อย่างไร

2
แท็บที่เปิดโดยทางโปรแกรมใน gnome-terminal, รันคำสั่งและเปิด tab ค้างไว้
ฉันพยายามเขียนคำสั่งที่จะเปิดตัวแท็บเทอร์มินัลไม่กี่อันรันบางสิ่งในแต่ละแท็บและเปิดแต่ละแท็บค้างไว้หลังจากที่คำสั่งเสร็จสิ้นดังนั้นฉันสามารถดูผลลัพธ์และพิมพ์คำสั่งเพิ่มเติมในแต่ละแท็บได้ บางสิ่งเช่นนี้ gnome-terminal --tab -e "ls -a" --tab -e "ls" แต่ปัญหานี้คือแท็บปิดทันทีที่คำสั่ง "ls" เสร็จสิ้น ไม่มีใครรู้วิธีทำให้แท็บเปิดอยู่หรือไม่


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