Mam polecenie zapisane w zmiennej. Udawajmy, że zmienna $i
ma wartość:
cat -nT index.php |grep 'someregex'
Gdy próbuję wykonać powyższą zmienną przez wpisanie, $i
nie powiedzie się, ponieważ powłoka próbuje wykonać całą zmienną jako jedno polecenie. Próbowałem także użyć eval($i)
i wprowadzić $i
backticks.
Jak mogę wykonać powłokę $i
tak, jakby była poleceniem? I dlaczego to nie działa tak samo jak.
$i='echo hi'; $i
Czy to dlatego, że musiałem włamać się w pojedyncze cytaty? (Ponieważ nie możesz ich zagnieździć.) Obecnie moim rozwiązaniem jest
echo $i > /foo; . /foo
Ale nie chcę tworzyć pliku tylko do tego, aby go usunąć później.
Mam na myśli „włamałem się do pojedynczych cytatów:
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"