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

15
จะ mkdir ได้อย่างไรถ้าไม่มี dir อยู่?
ฉันกำลังเขียนเชลล์สคริปต์ให้ทำงานภายใต้ KornShell (ksh) บน AIX ฉันต้องการใช้mkdirคำสั่งเพื่อสร้างไดเรกทอรี แต่ไดเรกทอรีอาจมีอยู่แล้วในกรณีนี้ฉันไม่ต้องการทำอะไรเลย ดังนั้นฉันจึงต้องการทดสอบเพื่อดูว่าไม่มีไดเรกทอรีหรือระงับข้อผิดพลาด "มีไฟล์" ที่ผิดพลาดmkdirเมื่อพยายามสร้างไดเรกทอรีที่มีอยู่ มีความคิดเห็นเกี่ยวกับวิธีการที่ดีที่สุดในการทำเช่นนี้?
1987 shell  scripting  ksh  aix  mkdir 

6
อะไรคือข้อแตกต่างระหว่าง $ (command) และ `command` ในการเขียนโปรแกรมเชลล์?
ในการจัดเก็บเอาต์พุตของคำสั่งเป็นตัวแปรใน sh / ksh / bash คุณสามารถทำได้ var=$(command) หรือ var=`command` ความแตกต่างระหว่างสองวิธีคืออะไร?
258 bash  shell  ksh  sh 

8
เลือกค่าที่ไม่ซ้ำกันหรือแตกต่างจากรายการในเชลล์สคริปต์ UNIX
ฉันมีสคริปต์ ksh ที่คืนค่ารายการจำนวนมากบรรทัดใหม่คั่นและฉันต้องการเห็นเฉพาะค่าที่ไม่ซ้ำกัน / แตกต่างกัน เป็นไปได้ที่จะทำเช่นนี้? ตัวอย่างเช่นสมมติว่าเอาต์พุตของฉันคือคำต่อท้ายไฟล์ในไดเรกทอรี: tar gz java gz java tar class class ฉันต้องการดูรายการที่ชอบ: tar gz java class
238 bash  unique  distinct  ksh  sh 

17
วิธีการตรวจสอบว่าสคริปต์นั้นมีที่มาหรือไม่
ฉันมีสคริปต์ที่ฉันไม่ต้องการให้มันโทรหาexitถ้ามันมีที่มา ฉันคิดว่าการตรวจสอบหากแต่ตอนนี้มีปัญหาหากสคริปต์ที่มีที่มาจากสคริปต์อื่นหรือถ้าแหล่งที่มาของผู้ใช้จากเปลือกแตกต่างกันเช่น $0 == bashksh มีวิธีที่เชื่อถือได้ในการตรวจสอบว่าสคริปต์นั้นมีที่มาหรือไม่?
217 bash  ksh 

8
วิธีรับคอลัมน์ที่สองจากเอาต์พุตคำสั่ง?
เอาต์พุตของคำสั่งของฉันเป็นดังนี้: 1540 "A B" 6 "C" 119 "D" คอลัมน์แรกจะเป็นตัวเลขเสมอตามด้วยช่องว่างแล้วจึงเป็นสตริงที่มีเครื่องหมายคำพูดคู่ จุดประสงค์ของฉันคือการได้รับคอลัมน์ที่สองเท่านั้นเช่น: "A B" "C" "D" ฉันตั้งใจจะใช้<some_command> | awk '{print $2}'เพื่อให้บรรลุสิ่งนี้ แต่คำถามก็คือค่าบางค่าในคอลัมน์ที่สองมีช่องว่างซึ่งเป็นตัวคั่นเริ่มต้นสำหรับawkแยกเขตข้อมูล ดังนั้นผลลัพธ์จะเลอะ: "A "C" "D" ฉันจะรับค่าคอลัมน์ที่สองได้อย่างไร (ด้วยเครื่องหมายคำพูดคู่) อย่างสะอาด?
152 shell  awk  ksh 

2
หมายความว่าอย่างไรในเชลล์เมื่อเราใส่คำสั่งไว้ในเครื่องหมายดอลลาร์และวงเล็บ: $ (คำสั่ง)
ฉันแค่ต้องการเข้าใจบรรทัดของโค้ดต่อไปนี้ในเชลล์ ใช้เพื่อรับไดเร็กทอรีการทำงานปัจจุบัน ฉันทราบว่า$(variable)ชื่อส่งคืนค่าภายในชื่อตัวแปร แต่$(command)ควรส่งคืนอะไร มันคืนค่าหลังจากรันคำสั่งหรือไม่? ในกรณีนั้นเราสามารถใช้`เพื่อดำเนินการคำสั่ง CWD="$(cd "$(dirname $0)"; pwd)" ผลลัพธ์เดียวกันสามารถนำมาจากบรรทัดของโค้ดต่อไปนี้และในเชลล์เวอร์ชันอื่น DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" ฉันไม่สามารถเข้าใจความหมายของและ$(cd..$(dirname ใครช่วยฉันคิดว่าคำสั่งนี้ดำเนินการอย่างไร
111 bash  shell  terminal  sh  ksh 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.