2013-04-13 4 views
1

사용자가 입력 한 입력이 숫자 유형 또는 숫자가 아닌 유형인지 확인하려고합니다.Bash 표준 오류 리디렉션

1> 수학 연산을 수행 : 숫자 형식은 다음 다른 필요한 작업을 할 경우 내 설계의 오류 메시지 (하지 표준 오류가 생성) 내가 사용하고

단계가 생성됩니다 입력에.
echo -n "Enter a number : "; read a

지금 입력 a이 숫자 유형 인 경우 다음 작업은 다른 성공 생성 된 표준 오차가있을 것입니다.

expr: non-numeric argument

내가 표준 오류를 리디렉션하기 위해 사용한 코드

Enter a number : ww

은 다음과 같습니다

tmp=`expr $a/1` >&2 

나는 또한 코드를 사용하여 널 (null) 파일로 rediirecting 시도했다 :

tmp=`expr $a/1` > /dev/null 

하지만 erro r은 계속 표시됩니다.

답변

2

방법 대신 입력을 정규식에 대해?

read a 
if [[ $a =~ ^[0-9]+$ ]] 
then 
    echo this is a number 
else 
    echo not a number 
fi 
  • ^ 수단 문자열
  • $ 개시는 문자열의 끝
  • [0-9]+ 숫자
  • =~ 1 이상의 차례 나오는 수단 Bash regular expression
4

당신은 내부 표현식 내 표준 오류 리디렉션해야합니다 :

tmp=`expr $a/1 2>/dev/null` 
2

모두 구문 의미 당신의 exampl의 stdout이 아닌 stdout이 리디렉션되고 있습니다. 앞에> 앞에 한정자가 없기 때문입니다. 있다가 표준 출력에 열려진 병합, 2>&1을 파일 또한 기술자 2. 유용하기 때문에

, 당신은 2> /dev/null 필요, 표준 에러를 던져, 그리고 &> file는 속기는 같은 파일에 표준 에러와 표준 출력을 모두 리디렉션.

이 페이지는 상당히 잘 설명됩니다. http://www.tldp.org/LDP/abs/html/io-redirection.html