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

คำว่า 'เชลล์' หมายถึงคลาสทั่วไปของล่ามคำสั่งแบบโต้ตอบตามข้อความซึ่งส่วนใหญ่มักเกี่ยวข้องกับระบบปฏิบัติการ Unix & Linux สำหรับคำถามเกี่ยวกับการเขียนสคริปต์เชลล์โปรดใช้แท็กเฉพาะเพิ่มเติมเช่น 'bash', 'powershell' หรือ 'ksh' หากไม่มีแท็กเฉพาะควรใช้วิธีแก้ปัญหาแบบพกพา (POSIX-compliant) แม้ว่าจะใช้ 'posix' เพิ่มเติมหรือ 'sh' แทนก็ตาม

5
การส่งคืนค่าจากฟังก์ชันที่เรียกในเชลล์สคริปต์
ฉันต้องการส่งคืนค่าจากฟังก์ชันที่เรียกในเชลล์สคริปต์ บางทีฉันอาจไม่มีไวยากรณ์ ฉันลองใช้ตัวแปรส่วนกลาง แต่นั่นก็ไม่ได้ผล รหัสคือ: lockdir="somedir" test() { retval="" if mkdir "$lockdir" then # Directory did not exist, but it was created successfully echo >&2 "successfully acquired lock: $lockdir" retval="true" else echo >&2 "cannot acquire lock, giving up on $lockdir" retval="false" fi return retval } retval=test() if [ "$retval" == …

6
เลขฐานสิบหกถึงทศนิยมในเชลล์สคริปต์
มีใครช่วยฉันแปลงเลขฐานสิบหกเป็นเลขฐานสิบในเชลล์สคริปต์ได้ไหม เช่นฉันต้องการแปลงเลขฐานสิบหกเป็นฐานสิบbfca3000โดยใช้เชลล์สคริปต์ โดยพื้นฐานแล้วฉันต้องการความแตกต่างของเลขฐานสิบหกสองตัว รหัสของฉันคือ: var3=`echo "ibase=16; $var1" | bc` var4=`echo "ibase=16; $var2" | bc` var5=$(($var4-$var3)) # [Line 48] เมื่อดำเนินการฉันได้รับข้อผิดพลาดนี้: Line 48: -: syntax error: operand expected (error token is "-")
126 bash  shell  hex  decimal 

11
ฉันจะตัดอักขระ X ตัวแรกออกจากสตริงโดยใช้ sed ได้อย่างไร
ฉันกำลังเขียนเชลล์สคริปต์สำหรับลินุกซ์แบบฝังในกล่องอุตสาหกรรมขนาดเล็ก ฉันมีตัวแปรที่มีข้อความpid: 1234และฉันต้องการตัดอักขระ X ตัวแรกออกจากบรรทัดดังนั้นจะมีเพียง 1234 ตัวเท่านั้น ฉันมีตัวแปรเพิ่มเติมที่ต้อง "ล้าง" ดังนั้นฉันจึงต้องตัด X อักขระแรกออกไปและใช้${string:5}ไม่ได้ด้วยเหตุผลบางประการในระบบของฉัน sedสิ่งเดียวที่กล่องดูเหมือนว่าจะมีคือ ฉันพยายามทำให้สิ่งต่อไปนี้ใช้งานได้: result=$(echo "$pid" | sed 's/^.\{4\}//g') ความคิดใด ๆ ?
126 bash  shell  sed 

3
วิธีทำมัลติไลน์เชลล์สคริปต์ใน Ansible
ตอนนี้ฉันใช้เชลล์สคริปต์ใน ansible ซึ่งจะอ่านได้ง่ายขึ้นมากถ้ามันอยู่ในหลายบรรทัด - name: iterate user groups shell: groupmod -o -g {{ item['guid'] }} {{ item['username'] }} ....more stuff to do with_items: "{{ users }}" ไม่แน่ใจว่าจะอนุญาตสคริปต์แบบหลายบรรทัดในโมดูล Ansible เชลล์ได้อย่างไร
126 shell  ansible 

6
ความหมายที่แท้จริงของ IFS = $ '\ n' คืออะไร?
หากตัวอย่างต่อไปนี้ซึ่งตั้งค่าIFSตัวแปรสภาพแวดล้อมเป็นอักขระฟีดบรรทัด ... IFS=$'\n' อะไรเครื่องหมายดอลลาร์หมายความ ว่า ? มันทำอะไรในกรณีเฉพาะนี้? ฉันจะอ่านเพิ่มเติมเกี่ยวกับการใช้งานเฉพาะนี้ได้ที่ไหน (Google ไม่อนุญาตให้ใช้อักขระพิเศษในการค้นหาและฉันไม่รู้ว่าจะค้นหาอะไรเป็นอย่างอื่น) ฉันรู้ว่าIFSตัวแปรสภาพแวดล้อมคืออะไรและ\nตัวละครคืออะไร (ฟีดบรรทัด) แต่ทำไมไม่ใช้แบบฟอร์มต่อไปนี้: IFS="\n"(ซึ่งใช้ไม่ได้) ตัวอย่างเช่นหากฉันต้องการวนซ้ำทุกบรรทัดของไฟล์และต้องการใช้ for loop ฉันสามารถทำได้: for line in (< /path/to/file); do echo "Line: $line" done อย่างไรก็ตามการดำเนินการนี้จะใช้ไม่ได้จนกว่าIFSจะตั้งค่าเป็นอักขระป้อนบรรทัด เพื่อให้ใช้งานได้ฉันต้องทำสิ่งนี้: OLDIFS=$IFS IFS=$'\n' for line in (< /path/to/file); do echo "Line: $line" done IFS=$OLDIFS หมายเหตุ:ฉันไม่ต้องการวิธีอื่นในการทำสิ่งเดียวกันฉันรู้หลายอย่างแล้ว ... ฉันแค่อยากรู้เรื่องนั้น$'\n'และสงสัยว่าจะมีใครให้คำอธิบายกับฉันได้บ้าง

9
ฉันจะเพิ่มการเติมแท็บลงใน Python shell ได้อย่างไร
เมื่อเริ่มแอปพลิเคชัน django โดยใช้python manage.py shellฉันจะได้รับเชลล์ InteractiveConsole - ฉันสามารถใช้การเติมแท็บ ฯลฯ Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) เมื่อเพิ่งเริ่มใช้ตัวแปล python pythonจะไม่มีการทำให้แท็บสมบูรณ์ มีใครบอกฉันได้ไหมว่า django กำลังทำอะไรเพื่อให้ฉันมีคอนโซลแบบโต้ตอบหรือฉันต้องทำอะไรเพื่อเริ่มคอนโซลแบบโต้ตอบโดยไม่มีแอป django


13
การเพิ่มตัวนับใน Bash loop ไม่ทำงาน
ฉันมีสคริปต์ง่ายๆต่อไปนี้ที่ฉันใช้งานลูปและต้องการรักษาไฟล์COUNTER. ฉันไม่สามารถเข้าใจได้ว่าเหตุใดตัวนับจึงไม่อัปเดต เป็นเพราะการสร้าง subshell หรือไม่? ฉันจะแก้ไขปัญหานี้ได้อย่างไร #!/bin/bash WFY_PATH=/var/log/nginx WFY_FILE=error.log COUNTER=0 grep 'GET /log_' $WFY_PATH/$WFY_FILE | grep 'upstream timed out' | awk -F ', ' '{print $2,$4,$0}' | awk '{print "http://domain.com"$5"&ip="$2"&date="$7"&time="$8"&end=1"}' | awk -F '&end=1' '{print $1"&end=1"}' | ( while read WFY_URL do echo $WFY_URL #Some more action COUNTER=$((COUNTER+1)) done ) …
125 linux  bash  shell  scripting  counter 

6
วิธีผสานออบเจ็กต์ JSON 2 รายการจาก 2 ไฟล์โดยใช้ jq
ฉันใช้jq tools (jq-json-processor) ในเชลล์สคริปต์เพื่อแยกวิเคราะห์ json ฉันมีไฟล์ json 2 ไฟล์และต้องการรวมเป็นไฟล์เดียว นี่คือเนื้อหาของไฟล์: file1 { "value1": 200, "timestamp": 1382461861, "value": { "aaa": { "value1": "v1", "value2": "v2" }, "bbb": { "value1": "v1", "value2": "v2" }, "ccc": { "value1": "v1", "value2": "v2" } } } file2 { "status": 200, "timestamp": 1382461861, "value": { "aaa": …
125 json  shell  command-line  jq 

10
จะหลบหนีการเรียก os.system () ได้อย่างไร
เมื่อใช้ os.system () มักจำเป็นต้องหลีกเลี่ยงชื่อไฟล์และอาร์กิวเมนต์อื่น ๆ ที่ส่งผ่านเป็นพารามิเตอร์ไปยังคำสั่ง ฉันจะทำเช่นนี้ได้อย่างไร? โดยเฉพาะอย่างยิ่งสิ่งที่สามารถใช้ได้กับหลายระบบปฏิบัติการ / เชลล์ แต่โดยเฉพาะอย่างยิ่งสำหรับ bash ฉันกำลังทำสิ่งต่อไปนี้ แต่แน่ใจว่าต้องมีฟังก์ชั่นไลบรารีสำหรับสิ่งนี้หรืออย่างน้อยก็เป็นตัวเลือกที่หรูหรา / แข็งแกร่ง / มีประสิทธิภาพมากขึ้น: def sh_escape(s): return s.replace("(","\\(").replace(")","\\)").replace(" ","\\ ") os.system("cat %s | grep something | sort > %s" % (sh_escape(in_filename), sh_escape(out_filename))) แก้ไข:ฉันยอมรับคำตอบง่ายๆของการใช้เครื่องหมายคำพูดไม่รู้ว่าทำไมฉันถึงไม่คิดอย่างนั้น ฉันเดาว่าเป็นเพราะฉันมาจาก Windows โดยที่ "และ" ทำงานแตกต่างกันเล็กน้อย เกี่ยวกับความปลอดภัยฉันเข้าใจข้อกังวล แต่ในกรณีนี้ฉันสนใจวิธีแก้ปัญหาที่ง่ายและรวดเร็วซึ่ง os.system () มีให้และแหล่งที่มาของสตริงนั้นไม่ได้สร้างโดยผู้ใช้หรืออย่างน้อยก็ป้อนโดย a ผู้ใช้ที่เชื่อถือได้ (ฉัน)
124 python  shell  escaping 

7
นับจำนวนอักขระที่เกิดขึ้นในสตริงโดยใช้ Bash
ฉันต้องการนับจำนวนครั้งที่เกิดขึ้นของอักขระในสตริงโดยใช้ Bash ในตัวอย่างต่อไปเมื่อถ่านคือ (ตัวอย่าง) tมันechosหมายเลขที่ถูกต้องของการเกิดขึ้นของtในvarแต่เมื่อตัวอักษรเป็นเครื่องหมายจุลภาคหรืออัฒภาคก็พิมพ์ออกศูนย์: var = "text,text,text,text" num = `expr match $var [,]` echo "$num"
124 bash  shell  sh 

11
กรณีการใช้งานของ noop [:] ใน bash คืออะไร?
ฉันค้นหา noop ใน bash (:) แต่ไม่พบข้อมูลที่ดี วัตถุประสงค์ที่แน่นอนหรือกรณีการใช้งานของตัวดำเนินการนี้คืออะไร? ฉันลองทำตามแล้วและมันก็ใช้ได้สำหรับฉัน: [mandy@root]$ a=11 [mandy@root]$ b=20 [mandy@root]$ c=30 [mandy@root]$ echo $a; : echo $b ; echo $c 10 30 โปรดแจ้งให้เราทราบกรณีการใช้งานใด ๆ ของตัวดำเนินการนี้แบบเรียลไทม์หรือสถานที่ใด ๆ ที่จำเป็นต้องใช้
124 bash  shell  noop 


7
วิธีเปลี่ยนชื่อไฟล์เป็นชุดใน macOS Terminal
ฉันมีโฟลเดอร์ที่มีชุดไฟล์ชื่อ: prefix_1234_567.png prefix_abcd_efg.png ฉันต้องการแบทช์ลบขีดล่างและเนื้อหาตรงกลางออกหนึ่งรายการดังนั้นผลลัพธ์จะเป็น: prefix_567.png prefix_efg.png เกี่ยวข้อง แต่ไม่สามารถอธิบายได้อย่างสมบูรณ์: ฉันจะเปลี่ยนชื่อไฟล์โดยใช้ Terminal ได้อย่างไร? Regex เพื่อเปลี่ยนชื่อไฟล์ใน OS X Terminal

5
วิธีระบุตัวแปรเชลล์หลายบรรทัด
ฉันได้เขียนคำถาม: function print_ui_hosts { local sql = "select ........." print_sql "$ sql" } sql ท้องถิ่น - สตริงที่ยาวมาก ไม่มีการจัดรูปแบบข้อความค้นหา ฉันจะแยกสตริงออกเป็นหลายบรรทัดได้อย่างไร
123 bash  shell 

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