Saya memiliki perintah yang disimpan dalam variabel. Mari kita anggap variabel $i
memiliki nilai:
cat -nT index.php |grep 'someregex'
Ketika saya mencoba menjalankan variabel di atas dengan mengetiknya $i
gagal karena shell mencoba mengeksekusi seluruh variabel sebagai satu perintah. Saya juga mencoba menggunakan eval($i)
dan memasukkan $i
backticks.
Bagaimana saya bisa membuat shell mengeksekusi $i
seolah-olah itu adalah perintah? Dan mengapa itu tidak bekerja sama dengan.
$i='echo hi'; $i
Apakah karena saya harus memilah-milah dalam tanda kutip tunggal? (Karena Anda tidak dapat membuat sarang mereka.) Saat ini solusi saya adalah
echo $i > /foo; . /foo
Tapi saya tidak ingin membuat file hanya untuk ini, hanya untuk menghapusnya nanti.
Yang saya maksud dengan "Saya meretas dalam tanda kutip tunggal adalah yang saya lakukan:
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"