2012-09-13 1 views
1

TS-7400 ARM SBC를 부팅하기위한 스크립트를 만들고 있는데, 일부 인수와 선택적 커널 매개 변수를 읽을 수 있기를 원합니다. SD 카드. 내 config 파일 syscfg.conf라고하고 KEYWORD=value 쌍을 사용하여 구성되어 있지만, 커널 인수 이후 자체는 동일한 구문을 가질 수 있습니다,이 같은 값을 구분 생각 :busybox에서 캡처 된 그룹 정규식을 검색하는 방법 sed

CMDLINE_ARGS="elevator=noop scheduler=noop" 

일반 bash는 테스트하는 동안, 내가 할 수 있었다 하나 이러한 방법 중 하나를 사용하여 커널 명령 줄 인수 분리 :

$ grep CMDLINE_ARGS syscfg.conf | sed 's/CMDLINE_ARGS="\(.*\)"/\1/' 
elevator=noop scheduler=noop 

$ grep CMDLINE_ARGS syscfg.conf | cut -d'"' -f2 
elevator=noop scheduler=noop 

$ awk -F'"' '/CMDLINE_ARGS/ {print $2}' syscfg.conf 
elevator=noop scheduler=noop 

하지만 그것은이 비지 박스 기반 벗었 리눅스 사용자 정의 커널 또는 응용 프로그램을 부팅하는 데 사용, 그것은 '아무튼입니다 TS-LINUX에서 실행하는 경우 보통 bash처럼 작동합니다. awk 명령도 존재하지 않는 동안, cut 버전은 잘 작동하지만, sed 하나의 반환이 :

CMDLINE_ARGS="elevator=noop scheduler=noop" 

왜 비지 박스의 sed 구현은 다음과 같이 행동한다? 전체 문자열을 반환하는 대신 정규식 인 " 구분 기호 사이에있는 모든 문자의 "\1"그룹 만 출력 할 것으로 예상했습니다. 우리가 bash처럼 작동하도록 할 수있는 방법이 있습니까?

+0

당신의 명령을 여기에 작동 비지 박스 버전 1.20.2 – Thor

+0

그것을합니까? 나는 TS-LINUX가 사용하는 버전을 확인해야 할 것입니다 ... 그것은 매우 오래된 것으로 보입니다 (아직 커널 2.4 ...) – Claudio

답변

0
sed '/CMDLINE_ARGS=/ {s/CMDLINE_ARGS=.//;s/.$//;}' syscfg.conf 

시도는 어쩌면이 인용하는 경우 문제 나 파이프 (내가 그 부분 중 하나 쉘 대체를 의심)

+0

흠. 나는 지금 휴가 중이지만, 일하러 돌아 오면 나는 그것을 시도 할 것이다. 감사! – Claudio