변수에 명령이 저장되어 있습니다. 변수 $i
에 값이 있다고 가정 해 봅시다 .
cat -nT index.php |grep 'someregex'
입력하여 위의 변수 $i
를 실행하려고하면 쉘이 전체 변수를 하나의 명령으로 실행하려고 시도하기 때문에 실패합니다. 나는 또한 백틱을 사용 eval($i)
하고 넣었 $i
습니다.
쉘을 명령 $i
처럼 실행하려면 어떻게 해야합니까? 왜 작동하지 않습니까?
$i='echo hi'; $i
작은 따옴표로 해킹해야했기 때문입니까? (당신은 그들을 중첩 할 수 없기 때문에) 현재 내 솔루션은
echo $i > /foo; . /foo
그러나 나는 이것을 위해 파일을 만들고 싶지 않고 나중에 삭제하기 만합니다.
"작은 따옴표로 해킹했다는 것은 다음과 같습니다.
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"