2010-04-15 2 views
1

나는 busybox 쉘을 사용하여 nfs를 사용하여 Linux를 부팅 할 때 bash가 실행하는 스크립트를 실행합니다. 이 라인에 대한 올바른 대안을 알려주십시오.busybox 쉘이 특정 스크립트 라인 실행을 거부합니다

cur_major=$((0x`stat -c %t $dev 2>/dev/null`)) 

BusyBox라는 내가이 라인의 구문 문제 이해 "0X"구문 오류를 말하는 오류가 발생합니다.

미리 감사드립니다.

답변

0

실행하는 데 문제가 없습니다. 다른 모든 것이 실패하면 단계별로 시도하십시오.

$ var=$(stat -c "%t" $dev 2>/dev/null) 
$ var=$((0x$var)) 

실제로 $(())은 산술 연산을 수행 할 수 있습니다. 실제로 당신이하려고하는 것은 무엇입니까? 16 진수로 변환하려고하십니까?

+0

안녕하세요, 매우 빠른 답장을 보내 주셔서 감사합니다. 이것 역시 시도했지만 busybox 셸은 0x를 해석 할 수 없습니다. 여전히 구문 오류를 제공합니다. 이 줄의 출력을 기준으로이 스크립트를 사용하여로드 모듈을 테스트하고 있습니다. 스크립트는 출력에 대한 비교를 수행하고 mknod를 수행합니다. 50 개 정도의 insmod가 있고 50 mknod가 있기 때문에 나는 여기에 갇혀있다. 수동으로하면 매우 성가시다. – neil1234

1
major_hex=`stat -c %t $dev 2>/dev/null` 
cur_major=`printf "%2d" 0x"$major_hex"` 
+0

안녕하세요 Peter, 이 질문에 대한 답장을 보내 주셔서 감사합니다. busybox에서 bc 명령에 대한 지원을 찾을 수 없습니다. 모든 드라이버가 문자 모듈이므로 cat/proc/partitions를 사용하여 정보를 얻을 수 없습니다. 전 10 진수를 사용할 수있는 방법을 찾아야합니다. 3 번에이 덧글을 올리려고합니다. 이유는 그것이 추가되지 않는 이유입니다. – neil1234