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

การเขียนสคริปต์เป็นรูปแบบของการเขียนโปรแกรมโดยทั่วไปมีลักษณะเป็นทางการต่ำพิมพ์หลวมและไม่ต้องการการรวบรวมที่ชัดเจน มีภาษาสคริปต์จำนวนมากและสิ่งเหล่านี้ใช้ในสถานการณ์ที่หลากหลาย - แอปพลิเคชันบรรทัดคำสั่ง, GUI, แอปพลิเคชันฝั่งเซิร์ฟเวอร์, โมดูลส่วนขยาย

10
จะสร้าง "นามแฝง" สำหรับเส้นทางที่ยาวได้อย่างไร?
ฉันพยายามสร้าง "นามแฝง" สำหรับเส้นทางที่ฉันใช้บ่อยในขณะที่ใช้เชลล์สคริปต์ ฉันลองทำบางอย่างแล้ว แต่ล้มเหลว: myFold="~/Files/Scripts/Main" cd myFold bash: cd: myFold: No such file or directory ฉันจะทำให้มันทำงานได้อย่างไร? อย่างไรก็ตามการcd ~/Files/Scripts/Mainทำงาน
95 linux  bash  unix  scripting 

10
คัดลอกไฟล์และโฟลเดอร์ทั้งหมดโดยใช้ msbuild
แค่สงสัยว่าจะมีใครช่วยฉันด้วยสคริปต์ msbuild ที่ฉันพยายามเขียนอยู่ สิ่งที่ฉันต้องการทำคือคัดลอกไฟล์และโฟลเดอร์ย่อยทั้งหมดจากโฟลเดอร์ไปยังโฟลเดอร์อื่นโดยใช้ msbuild {ProjectName} |----->Source |----->Tools |----->Viewer |-----{about 5 sub dirs} สิ่งที่ฉันต้องทำได้คือคัดลอกไฟล์และโฟลเดอร์ย่อยทั้งหมดจากโฟลเดอร์ tools ไปยังโฟลเดอร์ debug สำหรับแอปพลิเคชัน นี่คือรหัสที่ฉันมีจนถึงตอนนี้ <ItemGroup> <Viewer Include="..\$(ApplicationDirectory)\Tools\viewer\**\*.*" /> </ItemGroup> <Target Name="BeforeBuild"> <Copy SourceFiles="@(Viewer)" DestinationFolder="@(Viewer->'$(OutputPath)\\Tools')" /> </Target> สคริปต์สร้างทำงาน แต่ไม่คัดลอกไฟล์หรือโฟลเดอร์ใด ๆ ขอบคุณ

12
ฉันจะแสดงสคริปต์โดยพลการใน unix ได้อย่างไร
ฉันต้องการ daemonizer ที่สามารถเปิดโดยพลสคริปต์ทั่วไปหรือสั่งเข้ามาเป็นภูต มีสองกรณีทั่วไปที่ฉันต้องการจัดการ: ฉันมีสคริปต์ที่ควรรันตลอดไป หากเคยตาย (หรือรีบูต) ให้รีสตาร์ท อย่าปล่อยให้สำเนาสองชุดทำงานพร้อมกัน (ตรวจสอบว่าสำเนาทำงานอยู่แล้วและไม่เปิดใช้ในกรณีนั้น) ฉันมีสคริปต์หรือคำสั่งบรรทัดคำสั่งง่ายๆที่ฉันต้องการดำเนินการซ้ำ ๆ ตลอดไป (โดยหยุดชั่วคราวระหว่างการรัน) อีกครั้งอย่าปล่อยให้สคริปต์สองสำเนาทำงานพร้อมกัน แน่นอนว่ามันเป็นเรื่องเล็กน้อยที่จะเขียน "while (true)" วนรอบสคริปต์ในกรณีที่ 2 จากนั้นใช้โซลูชันสำหรับกรณีที่ 1 แต่วิธีแก้ปัญหาทั่วไปจะแก้ปัญหากรณีที่ 2 โดยตรงเนื่องจากใช้กับสคริปต์ในกรณีที่ 1 เป็น ดี (คุณอาจต้องการหยุดชั่วคราวให้สั้นลงหรือไม่มีเลยหากสคริปต์ไม่ได้ตั้งใจที่จะตาย (แน่นอนว่าถ้าสคริปต์ไม่มีวันตายจริงๆการหยุดชั่วคราวก็ไม่สำคัญ)) โปรดทราบว่าโซลูชันไม่ควรเกี่ยวข้องกับการเพิ่มรหัสล็อกไฟล์หรือการบันทึก PID ลงในสคริปต์ที่มีอยู่ โดยเฉพาะอย่างยิ่งฉันต้องการโปรแกรม "daemonize" ที่สามารถเรียกใช้งานได้ % daemonize myscript arg1 arg2 หรือตัวอย่างเช่น % daemonize 'echo `date` >> /tmp/times.txt' ซึ่งจะทำให้รายการวันที่เพิ่มขึ้นต่อท้าย times.txt …

11
โปรแกรมหรือสคริปต์บรรทัดคำสั่งง่ายๆในการสำรองฐานข้อมูลเซิร์ฟเวอร์ SQL คืออะไร?
ฉันหละหลวมเกินไปกับการสำรองข้อมูลฐานข้อมูลบนเซิร์ฟเวอร์ภายในของเรา มีโปรแกรมบรรทัดคำสั่งง่ายๆที่ฉันสามารถใช้ในการสำรองฐานข้อมูลบางฐานข้อมูลใน SQL Server 2005 ได้หรือไม่ หรือมี VBScript แบบธรรมดา?


6
การหลีกเลี่ยงเครื่องหมายคำพูดคู่ใน Batch Script
ฉันจะเปลี่ยนเครื่องหมายคำพูดคู่ทั้งหมดในพารามิเตอร์ของไฟล์แบตช์ด้วยเครื่องหมายคำพูดคู่ที่ใช้ Escape ได้อย่างไร นี่คือไฟล์แบตช์ปัจจุบันของฉันซึ่งขยายพารามิเตอร์บรรทัดคำสั่งทั้งหมดภายในสตริง: @echo off call bash --verbose -c "g++-linux-4.1 %*" จากนั้นใช้สตริงนั้นเพื่อโทรไปยัง bash ของ Cygwin โดยเรียกใช้งานคอมไพเลอร์ข้าม Linux น่าเสียดายที่ฉันได้รับพารามิเตอร์เช่นนี้ส่งไปยังไฟล์แบตช์ของฉัน: "launch-linux-g++.bat" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -DNDEBUG -c -o "C:\Users\Me\Documents\Testing\SparseLib\bin\Win32\LinuxRelease\hello.o" "c:\Users\Me\Documents\Testing\SparseLib\SparseLib\hello.cpp" โดยที่เครื่องหมายคำพูดแรกรอบเส้นทางแรกที่ส่งเข้ามาคือการสิ้นสุดสตริงที่ถูกส่งไปยัง GCC ก่อนเวลาอันควรและส่งผ่านพารามิเตอร์ที่เหลือไปยัง bash โดยตรง (ซึ่งล้มเหลวอย่างไม่น่าเชื่อ) ฉันคิดว่าถ้าฉันสามารถต่อพารามิเตอร์เป็นสตริงเดียวได้หรือไม่จากนั้นให้หลีกเลี่ยงเครื่องหมายคำพูดมันก็น่าจะใช้ได้ดี แต่ฉันมีปัญหาในการพิจารณาว่าจะทำอย่างไร มีใครรู้บ้าง?

10
วิธีเรียกใช้สคริปต์ Python ใน Windows
ฉันมีสคริปต์ง่ายๆ blah.py (โดยใช้ Python 2): import sys print sys.argv[1] หากฉันรันสคริปต์ของฉันโดย: python c:/..../blah.py argument มันพิมพ์อาร์กิวเมนต์ แต่ถ้าฉันรันสคริปต์โดย: blah.py argument เกิดข้อผิดพลาด: IndexError ... ข้อโต้แย้งจึงไม่ส่งผ่านไปยังสคริปต์ python.exe ใน PATH โฟลเดอร์ที่มี blah.py อยู่ใน PATH ด้วย python.exe เป็นโปรแกรมเริ่มต้นในการเรียกใช้ไฟล์ * .py อะไรคือปัญหา?

5
การรันคำสั่งบรรทัดคำสั่งภายในสคริปต์ Ruby
มีวิธีเรียกใช้คำสั่งบรรทัดคำสั่งผ่าน Ruby หรือไม่? ฉันกำลังพยายามสร้างโปรแกรม Ruby เล็ก ๆ ที่สามารถโทรออกและรับ / ส่งผ่านโปรแกรมบรรทัดคำสั่งเช่น 'screen', 'rcsz' เป็นต้น จะดีมากถ้าฉันสามารถผูกทั้งหมดนี้เข้ากับ Ruby (แบ็กเอนด์ MySQL ฯลฯ )


6
การสร้างอาร์เรย์จากไฟล์ข้อความใน Bash
สคริปต์ใช้เวลา URL ให้แยกมันสำหรับฟิลด์ที่จำเป็นและเปลี่ยนเส้นทางการส่งออกที่จะถูกบันทึกไว้ในไฟล์file.txt เอาต์พุตจะถูกบันทึกในบรรทัดใหม่ทุกครั้งที่พบฟิลด์ file.txt A Cat A Dog A Mouse etc... ฉันต้องการรับfile.txtและสร้างอาร์เรย์จากมันในสคริปต์ใหม่โดยที่ทุกบรรทัดจะเป็นตัวแปรสตริงของตัวเองในอาร์เรย์ จนถึงตอนนี้ฉันได้ลอง: #!/bin/bash filename=file.txt declare -a myArray myArray=(`cat "$filename"`) for (( i = 0 ; i < 9 ; i++)) do echo "Element [$i]: ${myArray[$i]}" done เมื่อฉันเรียกใช้สคริปต์นี้ช่องว่างจะส่งผลให้คำถูกแยกและแทนที่จะได้รับ เอาต์พุตที่ต้องการ Element [0]: A Cat Element [1]: A Dog etc... ฉันได้รับสิ่งนี้: …

8
ฉันจะสร้างประเภทที่กำหนดเองใน PowerShell เพื่อให้สคริปต์ของฉันใช้งานได้อย่างไร
ฉันต้องการกำหนดและใช้ประเภทที่กำหนดเองในสคริปต์ PowerShell ของฉัน ตัวอย่างเช่นสมมติว่าฉันต้องการวัตถุที่มีโครงสร้างต่อไปนี้: Contact { string First string Last string Phone } ฉันจะสร้างสิ่งนี้ได้อย่างไรเพื่อให้ฉันสามารถใช้งานได้ดังต่อไปนี้: function PrintContact { param( [Contact]$contact ) "Customer Name is " + $contact.First + " " + $contact.Last "Customer Phone is " + $contact.Phone } สิ่งนี้เป็นไปได้หรือแม้แต่แนะนำใน PowerShell

20
เปลี่ยนชื่อไฟล์ซ้ำ ๆ โดยใช้ find และ sed
ฉันต้องการอ่านไดเรกทอรีจำนวนมากและเปลี่ยนชื่อไฟล์ทั้งหมดที่ลงท้ายด้วย _test.rb เพื่อลงท้ายด้วย _spec.rb แทน มันเป็นสิ่งที่ฉันไม่เคยคิดมาก่อนว่าจะทำอย่างไรกับการทุบตีดังนั้นคราวนี้ฉันคิดว่าฉันจะพยายามอย่างเต็มที่เพื่อให้มันถูกตอก จนถึงตอนนี้ฉันคิดได้สั้น ๆ แต่ความพยายามที่ดีที่สุดของฉันคือ: find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \; หมายเหตุ: มีเสียงสะท้อนเพิ่มเติมหลังจาก exec เพื่อให้พิมพ์คำสั่งแทนการรันในขณะที่ฉันกำลังทดสอบ เมื่อฉันเรียกใช้ผลลัพธ์สำหรับชื่อไฟล์ที่ตรงกันคือ: mv original original กล่าวคือการแทนที่โดย sed ได้สูญหายไป เคล็ดลับคืออะไร?
87 bash  scripting  sed  find  replace 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.