답변:
이 사람을보십시오 =) :
sed -n 'line_num p' | bash
또는
"$(sed -n 'line_num p')"
line_num
와 사이에 공백을 넣을 필요가 없습니다. p
예를 들어 line_num
123이면 sed -n 123p | bash
. 그리고 sh
충분 하다면 sh
대신을 사용하십시오 bash
.
sed -n 'line_num p' | sh
또 다른 해결책이 될 수 있을까? 이것은 더 호환성이 있습니까?
sh
실제로 쉘 이 무엇인지에 달려 있습니다. 데비안 (및 파생 된) 시스템 sh
은 일반적으로 dash
입니다. 스크립트가 작성 dash
되었거나 이식 가능한 구문에 의존 한다면 아마도 bash
그렇습니다. 그러나 스크립트가 작성 된다면 거의 확실하지 않습니다.
history
900 행을 실행하려는 경우 900 행을 실행할 수 있습니까?
이것을 대화식으로하는 경우 bash 기록에 줄을 쓸 수 있습니다.
history -s "$(sed -n 'line_num p')"
그런 다음을 눌러 ↑Enter행을 판독 선 버퍼에 삽입하고 실행하십시오. 너무 늦기 전에 줄을 볼 수있는 기회를 제공합니다.
man history
history
은 빌트인이므로 문서화되어 있습니다 help history
(또는 man bash
이지만 많은 것을 읽습니다). 위의 내용을 인용하면 history -s
"ARG를 내역 목록에 단일 항목으로 추가"
넌 할 수있어...
{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"
그것은 $NUM
쉘 변수의 스크립트에서 줄을 가져온 $line
다음 현재 쉘의 명령으로 평가합니다.
이를 수행하는 다른 방법은 다음과 같습니다.
</path/to/script sed "${NUM}q;d" >/tmp/"$$"
. /tmp/"$$" ; rm /tmp/"$$"
eval
합니다.
gnu sed
가 e
뭔가 같은 플래그를 sed "${NUM}"'!d;s/^//e;q'
또한 일 것이다