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

ตัวแปรคือชื่อถ้าเลือกอย่างถูกต้องด้วยความหมายเชิงสัญลักษณ์ที่เก็บค่าหรือค่า ใช้แท็กนี้หากคำถามของคุณเกี่ยวกับการใช้ตัวแปรในการเขียนสคริปต์เชลล์ (หากคุณต้องการถามเกี่ยวกับตัวแปรในภาษาการเขียนโปรแกรมคุณควรถามเกี่ยวกับ StackOverflow)

2
จะเก็บไพพ์ (|) ในตัวแปรได้อย่างไร?
แนวคิดจะใช้เป็น ... ไปป์ในคำสั่ง ตัวอย่างเช่นสมมติว่ามีเส้นทางยาว ๆ ที่ต้องพิมพ์ซ้ำอีกครั้งตามด้วยไพพ์และโปรแกรมที่สองเช่น "directory1/directory2/direcotry3/file.dat | less -I " ฉันต้องการให้ส่วนนั้นถูกเก็บไว้ในตัวแปรดังนั้นจึงสามารถใช้เช่นนี้: r="directory1/directory2/direcotry3 \| less -I -p " $ cat path1/path2/$r <searchterm> แต่ฉันได้รับ cat: invalid option -- I Try `cat --help' for more information. ... หมายถึงท่อไม่ทำงาน
12 bash  pipe  variable 

2
เหตุใดฉันจึงไม่สามารถใช้ตัวแปรเป็นคำนำหน้าให้กับคำสั่งเพื่อตั้งค่าตัวแปรสภาพแวดล้อมได้
โดยปกติแล้วมันเป็นไปได้ที่จะตั้งค่าตัวแปรสภาพแวดล้อมสำหรับคำสั่งโดยนำหน้ามันเช่น: hello=hi bash -c 'echo $hello' ฉันรู้ด้วยว่าเราสามารถใช้ตัวแปรเพื่อทดแทนส่วนใดส่วนหนึ่งของการเรียกใช้คำสั่งดังนี้: $ cmd=bash $ $cmd -c "echo hi" # equivalent to bash -c "echo hi" ฉันประหลาดใจมากที่พบว่าคุณไม่สามารถใช้ตัวแปรเพื่อนำหน้าคำสั่งเพื่อตั้งค่าตัวแปรสภาพแวดล้อม กรณีทดสอบ: $ prefix=hello=hi $ echo $prefix # prints hello=hi $ $prefix bash -c 'echo $hello' hello=hi: command not found เหตุใดฉันจึงไม่สามารถตั้งค่าตัวแปรสภาพแวดล้อมโดยใช้ตัวแปรได้ ส่วนนำหน้าเป็นส่วนพิเศษหรือไม่? ฉันสามารถทำให้มันทำงานได้โดยใช้ eval ข้างหน้า แต่ฉันก็ยังไม่เข้าใจว่าทำไม ฉันใช้ทุบตี 4.4

4
เหตุใดเนื้อหา JSON จาก heredoc จึงไม่สามารถแยกวิเคราะห์ได้
ฉันมีส่วนของ JSON ต่อไปนี้ใช้ไม่ได้: VALUE=<<PERSON { "type": "account", "customer_id": "1234", "customer_email": "jim@gmail.com" } PERSON echo -n "$VALUE" | python -m json.tool ผลลัพธ์คือ: ไม่สามารถถอดรหัสวัตถุ JSON ได้ ทำเช่นเดียวกันกับjqเช่น echo -n "$VALUE" | jq '.' ไม่มีเอาต์พุต มีพฤติกรรมเหมือนกันสำหรับสิ่งต่อไปนี้: VALUE=<<PERSON '{ "type": "account", "customer_id": "1234", "customer_email": "jim@gmail.com" }' PERSON echo -n "$VALUE" | python -m json.tool …

2
วิธีทำให้ `local` จับรหัสทางออกได้อย่างไร
ในโครงการของฉันฉันมีตัวอย่างต่อไปนี้: local output="$(bash "${1##*/}")" echo "$?" สิ่งนี้จะพิมพ์ค่าศูนย์เนื่องจากการlocalลบlocalจะทำให้$?ตัวแปรทำงานได้อย่างถูกต้อง: ซึ่งจะถือว่ารหัสการออกจาก subshell คำถามของฉันคือ: ฉันจะเก็บตัวแปรนี้ไว้ในตัวเครื่องได้อย่างไรในขณะที่ยังเก็บค่าการออกได้


2
วิธีใช้ตัวแปรภายในเครื่องหมายคำพูดเดี่ยว
ฉันมีแอปพลิเคชันที่ใช้เป็นคุณลักษณะอินพุตในเครื่องหมายคำพูดคู่ฝังอยู่ในเครื่องหมายคำพูดเดี่ยว ยกตัวอย่างคำสั่งที่ถูกต้องนี้: command -p 'cluster="cl1"' เพื่อให้เป็นไปโดยอัตโนมัติฉันสร้างไฟล์ bash โดยใช้$CLUSTERเป็นตัวแปร ฉันควรสั่งการอย่างไร กล่าวอีกนัยหนึ่งฉันควรใส่อะไรแทน cl1 โปรดทราบว่าหากฉันแก้ไขคำสั่งข้างต้นคำสั่งนั้นจะไม่ได้รับการยอมรับ ตัวอย่างเช่น: command -p "cluster=cl1"ไม่ยอมรับ


4
POSIX-ly จะนับจำนวนบรรทัดในตัวแปรสตริงได้อย่างไร
ฉันรู้ว่าฉันสามารถทำได้ใน Bash: wc -l <<< "${string_variable}" โดยพื้นฐานแล้วทุกสิ่งที่ฉันพบเกี่ยวข้องกับ<<<ตัวดำเนินการ Bash แต่ใน POSIX shell <<<นั้นไม่ได้ถูกกำหนดและฉันไม่สามารถหาวิธีอื่นได้เป็นเวลาหลายชั่วโมง ฉันค่อนข้างแน่ใจว่ามีวิธีแก้ปัญหาอย่างง่าย แต่น่าเสียดายที่ฉันไม่พบมัน

2
คุณสามารถอธิบายสามสิ่งนี้ในรหัสทุบตีนี้ให้ฉันได้ไหม
ฉันมีfunctionใน.bashrcไฟล์ของฉัน ฉันรู้ว่ามันทำอะไรมันทำตามขั้นตอน X หลาย ๆ ไดเรกทอรีด้วยcd นี่มันคือ: up() { local d="" limit=$1 for ((i=1 ; i <= limit ; i++)) do d=$d/.. done d=$(echo $d | sed 's/^\///') if [ -z "$d" ]; then d=.. fi cd $d } แต่คุณสามารถอธิบายสามสิ่งนี้จากฉันได้ไหม? d=$d/.. sed 's/^\///' d=.. ทำไมไม่ทำเช่นนี้: up() { limit=$1 for ((i=1 …

2
สถานะการส่งคืนของการกำหนดตัวแปรกำหนดอย่างไร?
ฉันได้เห็นโครงสร้างในสคริปต์เช่นนี้ if somevar="$(somecommand 2>/dev/null)"; then ... fi เอกสารนี้อยู่ที่ไหนสักแห่ง? สถานะการส่งคืนของตัวแปรถูกกำหนดอย่างไรและเกี่ยวข้องกับการทดแทนคำสั่งอย่างไร (ตัวอย่างเช่นฉันจะได้ผลลัพธ์เดียวกันด้วยif echo "$(somecommand 2>/dev/null)"; then)

2
กำลังเตรียมใช้งานตัวแปร Bash - จำเป็นต้องมีการแนะนำหรือกำหนดตามที่คุณไป
มีข้อได้เปรียบ / เสียเปรียบในการเตรียมใช้งานค่าของตัวแปร bash ในสคริปต์ไม่ว่าจะก่อนโค้ดหลักหรือตัวแปรโลคัลในฟังก์ชันก่อนกำหนดค่าจริงให้กับมัน? ฉันต้องทำอะไรแบบนี้หรือเปล่า: init() { name="" name=$1 } init "Mark" มีความเสี่ยงของตัวแปรที่เริ่มต้นด้วยค่าขยะ (หากไม่ได้กำหนดค่าเริ่มต้น) และมีผลกระทบเชิงลบของค่าของตัวแปรหรือไม่?
9 bash  variable 

3
“ แปรปรวน” เครื่องหมายและ (พื้นหลังกระบวนการ)
ฉันต้องการทราบว่ามีวิธีที่จะใส่เครื่องหมายและในตัวแปรและยังใช้เพื่อส่งกระบวนการไปยังพื้นหลัง งานนี้: BCKGRND=yes if [ "$BCKGRND" = "yes" ]; then sleep 5 & else sleep 5 fi แต่มันจะไม่เจ๋งมั้ยที่จะบรรลุห้าสายเหล่านั้นด้วยเพียงอันเดียว? ชอบมาก BCKGRND='&' sleep 5 ${BCKGRND} แต่นั่นไม่ได้ผล หาก BCKGRND ไม่ได้ตั้งค่าให้ใช้งานได้ แต่เมื่อตั้งค่ามันจะตีความว่าเป็นตัวอักษร '&' และข้อผิดพลาด


1
Linux: คำสั่ง set สำหรับตัวแปรโลคัล
ฉันพยายามทำความเข้าใจกับตัวแปรโลคัล / สภาพแวดล้อมและคำสั่งส่งออก / ตั้งค่า $ set FILEM="razrax" $ echo $FILEM $ FILEN="test" $ echo $FILEN test โปรดอธิบายว่าทำไมecho $FILEMส่งคืนสตริงว่าง
9 bash  shell  variable 

1
จะพิมพ์ตัวแปรที่ไม่ใช่สภาพแวดล้อมทั้งหมดได้อย่างไร
จะพิมพ์ตัวแปรที่ไม่ใช่สภาพแวดล้อมทั้งหมดได้อย่างไร นี่คือตัวแปรทั้งหมดที่ฉันเพิ่มเข้ามาตั้งแต่ตอนที่เชลล์เริ่มต้นเช่นเมื่อทำ: read abc 123 # echo ${abc} => 123 หรือ xyz='123' # echo ${xyz} => 123 ฉันต้องการพิมพ์ทั้งหมดเพื่อทราบว่ามีการเพิ่มสิ่งใดในหน่วยความจำเพื่อให้ฉันสามารถล้างมันออกได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.