ฉันมีคำสั่งเก็บไว้ในตัวแปร สมมติว่าตัวแปร$i
มีค่า:
cat -nT index.php |grep 'someregex'
เมื่อฉันพยายามที่จะดำเนินการตัวแปรข้างต้นโดยการพิมพ์$i
มันล้มเหลวเพราะเชลล์พยายามที่จะดำเนินการตัวแปรทั้งหมดเป็นคำสั่งเดียว ฉันยังลองใช้eval($i)
และใส่$i
backticks
ฉันจะทำให้เชลล์ดำเนินการ$i
ราวกับว่ามันเป็นคำสั่งได้อย่างไร และทำไมมันไม่ทำงานเหมือนกัน
$i='echo hi'; $i
เป็นเพราะฉันต้องแฮ็คคำพูดเดียว? (เพราะคุณไม่สามารถซ้อนได้) ปัจจุบันโซลูชันของฉันคือ
echo $i > /foo; . /foo
แต่ฉันไม่ต้องการสร้างไฟล์สำหรับสิ่งนี้เพียงเพื่อลบในภายหลัง
สิ่งที่ฉันหมายถึงโดย "ฉันแฮ็คในคำพูดเดียวที่ฉันทำ:
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"