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

การทำสคริปต์ Bash กำลังสร้างสคริปต์ในภาษา Bash shell

1
Bash script ล้มเหลว
ฉันมีสคริปต์นี้ มันทำงานได้ดีในระบบหนึ่ง แต่ให้ข้อผิดพลาดบางอย่างกับเครื่องอื่น 1 #!/bin/bash 2 EXEC_DIR=`dirname ${0}` 3 source ${EXEC_DIR}/config.sh 4 5 last_exec_date=$(cat $EXEC_DIR/$collector_temp | tail -1) 6 7 if [ -f $EXEC_DIR/$collector_temp ]; then 8 last_exec_date=$(cat $EXEC_DIR/$collector_temp | tail -1) 9 else 10 date +%s >> ${EXEC_DIR}/$collector_temp 11 last_exec_date=$(cat $EXEC_DIR/$collector_temp | tail -1) 12 fi 13 14 15 …

1
ฉันจะตรวจสอบเนื้อหาของโฟลเดอร์สำหรับไฟล์บางไฟล์ได้อย่างไร
ฉันจะไปเกี่ยวกับการเขียนสคริปต์เพื่อวนรอบทุกโฟลเดอร์ในฮาร์ดไดรฟ์ค้นหาไฟล์วิดีโอใด ๆ แยกพวกเขาไปยังรากของฮาร์ดไดรฟ์แล้วลบทุกอย่างอื่นได้อย่างไร

2
Unix / linux shell scripting การแบ่งจุดทศนิยม
ฉันต้องหารค่าทศนิยมสองค่าและเก็บไว้ในตัวแปร รหัสของฉันด้านล่าง v_missedvol=4003.03 v_allvolume=3003.03 v_vol_temp= $(echo "$v_missedvol / $v_allvolume" | bc -l ) ผลลัพธ์ที่ฉันได้รับคือ -ksh: =1.33299700635691285135: not found [No such file or directory] ต่อไปฉันต้องการค่าที่จะเก็บไว้เป็น v_volume_total=1.3329 *100 กรุณาช่วยด้วยนี้ขอบคุณ!

1
หยุดการวนซ้ำบน Linux
ฉันใช้รหัสต่อไปนี้เพื่อวนซ้ำ ffmpeg บนเซิร์ฟเวอร์ Linux ของฉัน นี่คือสิ่งที่ฉันมี: #!/bin/bash while :; do ffmpeg -re -i "input" output.mp4 done สิ่งที่ฉันต้องการทำคือหยุดลูปชั่วคราวเพื่อหยุดลูปจนกว่าฉันจะดำเนินการต่อโดยทำหน้าที่เป็น 'ปิด' และ 'สลับ' สำหรับสตรีมโดยไม่ต้องรีบูตเซิร์ฟเวอร์ในแต่ละครั้ง :)

1
“ บรรทัดที่ 3: ข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด” ในเชลล์สคริปต์
ฉันพยายามเรียกใช้ไฟล์ปฏิบัติการด้วยพารามิเตอร์หลายครั้ง ฉันเขียนสคริปต์สำหรับมัน แต่ฉันมักจะได้รับข้อผิดพลาดและไม่สามารถหาวิธีแก้ไขได้ #!/bin/bash export VCF_FILE='KI_subsetted.recode.vcf' for i in $(seq 22) do; /home/lab/Desktop/vcftools_0.1.13/bin/vcftools --vcf $VCF_FILE --chr i --out ./by_chrs_komi/i --recode; done ข้อผิดพลาดที่ฉันได้รับคือ: ./chrs.sh: line 3: syntax error near unexpected token `/home/lab/Desktop/vcftools_0.1.13/bin/vcftools' ./chrs.sh: line 3: `for i in $(seq 22) do; /home/lab/Desktop/vcftools_0.1.13/bin/vcftools --vcf ./KI_subsetted.recode.vcf --chr i --out ./by_chrs_komi/i --recode; done' ฉันใช้ …

1
Linux: การลบซ้ำแบบปลอดภัยภายในสคริปต์
ฉันกำลังทำงานกับสคริปต์อัตโนมัติที่ทำงานบนกล่อง Linux (Debian) สคริปต์เหล่านั้นเริ่มจากตัวจัดตารางเวลาและจัดการไฟล์ภายในไดเรกทอรีของตนเอง ในตอนท้ายของสคริปต์ฉันต้องลบไฟล์ชั่วคราว ขณะนี้ฉันชอบสิ่งนี้: #check that some variables are not empty if [[ -z $var1 || -z $var2 || -z $var3 ]]; then echo "Some var is empty" exit 1 fi workingdir=$var1/$var2 #some checks on working directory if [[ ! -d $workingdir ]]; then echo "Directory error" exit …

1
grep และค้นหาและแทนที่ใน linux ยอมรับพารามิเตอร์ด้วย /
ฉันพยายามค้นหาและแทนที่เนื้อหาของไฟล์โดยใช้ grep และ sed grep "#!/bin/bash" ./ | sed xargs -i 's/#!/bin/bash/#!/usr/bin/env bash' ฉันจะทำให้แน่ใจว่าสตริง#!/bin/bashจะแยกเป็นสตริงและไม่สับสน demiliter /?

1
สคริปต์แบบธรรมดาทำงานผ่าน cronjob ไม่ทำงาน แต่ทำงานได้จากเชลล์
ฉันอยู่บนโฮสติ้งที่ใช้ร่วมกันและฉันพยายามกำหนด cronjob ให้ทำงานทุก ๆ ครั้ง ผ่าน cPanel ฉันมีกำหนดจะเรียกใช้สคริปต์ของฉัน แต่แม้ว่าตามที่โฮสต์ของฉันสนับสนุน cronjob ทำงาน แต่สคริปต์ดูเหมือนจะไม่ทำอะไรเลย คำสั่งงาน cron ที่ฉันตั้งค่าผ่าน cPanel คือ: /bin/sh /home1/myusername/public_html/somefolder/cronjob2.sh และ cronjob2.sh #!/bin/bash /home1/myusername/public_html/somefolder/node_modules/forever/bin/forever stop 0 เมื่อผ่าน SSH ฉันจะดำเนินการ: /home1/myusername/public_html/somefolder/cronjob2.sh มันหยุดกระบวนการตลอดไปตามที่ต้องการ จาก cronjob ไม่ได้ทำอะไรเลย ฉันจะทำงานนี้ได้อย่างไร แก้ไข: ดังนั้นฉันได้ลอง: /bin/sh /home1/username/public_html/somefolder/cronjob2.sh >> /tmp/mylog 2>&1 และmylogรายการพูดว่า: /usr/bin/env: node: No such file or directory ดูเหมือนว่าจะต้องมีการเรียกใช้โหนดตลอดไปและไม่พบสิ่งนี้ …

2
วิธีไพพ์ stdout แบบไบนารีไปยังการเชื่อมต่อ tls ที่บีบอัดได้อย่างไร
เมื่อไม่นานมานี้ฉันสามารถใช้: cat somefile.txt | openssl s_client -connect server:port -quiet -comp อย่างไรก็ตามคำสั่งนี้ใช้งานไม่ได้แม้กับ-ign_eof: $ cat somefile.bmp | openssl s_client -connect server:port -quiet -ign_eof write:errno=32 เพราะ somefile ประกอบด้วยข้อมูลไบนารีบริสุทธิ์(ที่.bmpเป็นรูปแบบเดียวที่ได้รับการยอมรับโดยเซิร์ฟเวอร์และsomefile.bmpจะต้องใช้เวลามากเกินไปที่จะส่งการบีบอัด) ไม่ใช่เพื่อความปลอดภัยเนื่องจากข้อมูลที่ฉันส่งเป็นข้อมูลสาธารณะ แต่ฉันไม่ได้ควบคุมเซิร์ฟเวอร์ที่ไม่อนุญาตการเชื่อมต่อที่ปลอดภัย

1
เรียกใช้งานเชลล์ย่อย bash และคาดว่าคำสั่ง
จากเชลล์สคริปต์ฉันจะเปิดใช้เชลล์ย่อย bash สำหรับผู้ใช้ & รอให้ผู้ใช้พิมพ์ exit ที่พรอมต์เชลล์ย่อยของ bash ได้อย่างไร ฉันพยายามbash -c expect -c 'expect "exit" {send "Exiting\n"}';แต่มันไม่ทำงาน กรุณาช่วย. ขอบคุณ

1
นามแฝงที่รันคำสั่งย่อย
ฉันต้องการเรียกใช้ 2 คำสั่งภายใต้ an aliasแต่เนื่องจากมีcdและฉันไม่ต้องการเปลี่ยนโฟลเดอร์จากผู้โทรหลักฉันคิดว่ามันอาจช่วยเรียกคำสั่งย่อย: alias lhu="$(cd /my/path && myotherCommand)" แต่เมื่อโทรมาlhuมันบอกว่าnot found(ฉันsourced แล้ว) ฉันจะทำสิ่งนี้ได้อย่างไร

1
Bash Script เพื่อเรียกใช้คำสั่งในหน้าจอ
ฉันจำเป็นต้องสร้างสคริปต์ทุบตีที่จะเปิดเซสชันหน้าจอใหม่จากนั้นเรียกใช้โปรแกรมในเซสชัน tha เป็นไปได้ไหมที่จะทำเช่นนั้น? ความช่วยเหลือใด ๆ ชื่นชม

1
bash script เพื่อ tar หลายโดเมนโดเมน
! / bin / ทุบตี sitedir="$HOME/domains" logs="$HOME/site_backups/log" tbackups="$HOME/site_backups/today" ybackups="$HOME/site_backups/yesterday" echo "`date`" > $logs/backups.log for i in `ls`; do cd $sitedir/$i tar -czf $tbackups/$i".tar.gz" /public_html >> $logs/backups.log done exit 0 ฉันต้องการสำรองข้อมูลทุกโฟลเดอร์ public_html ภายในชื่อโดเมน ($ home / domains / site.com / public_html) และสร้าง tar ใน $ HOME / site_backups / วันนี้ด้วยชื่อโดเมน อย่างไรก็ตามเมื่อฉันเรียกใช้ทุบตีทุบตีฉันได้รับข้อผิดพลาด: …

1
การจัดการกับสตริงเป็นอินพุตไฟล์สำหรับโปรแกรมภายในสคริปต์ทุบตี
บอกว่าฉันมีเครื่องมือ X ที่รับเฉพาะไฟล์เป็นอินพุตมีวิธีส่งอินพุตไปที่ X เป็นสตริงโดยไม่ต้องเขียนลงไฟล์แล้วอ่านมันในสคริปต์ทุบตีหรือไม่?

1
ใน Bash ฉันสามารถให้ autocd เปิดโปรแกรมแก้ไขได้หรือไม่ถ้าฉันใส่ชื่อไฟล์?
ฉันเพิ่งตั้งค่าautocdของฉัน.bash_profile: shopt -s autocd ตอนนี้ฉันพิมพ์ได้ $ some-directory และโดยอัตโนมัติcdลงไป ตอนนี้ฉันสามารถบอก Bash ได้ไหมถ้าฉันป้อนไม่ใช่แค่ชื่อไดเรกทอรี แต่ชื่อไฟล์: $ some-directory/file.txt ฉันต้องการให้เปิดไฟล์นั้นในโปรแกรมแก้ไข (เช่น Vim) หรือไม่? ฉันไม่รู้ว่านี่จะเป็นตัวเลือกในตัว แต่ฉันหวังว่าฉันจะทำได้โดยใช้สคริปต์ที่ฉลาด

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