반응형 shell2 unix 쉘 문자를 숫자로 연산시 주의 점 쉘 스크립트에서 연산을 하는데 특이한 걸 발견했다. let var=0011*1;echo $var 의도는 문자형식으로 된걸 앞에 0때고 숫자처럼 변경하려고 하는건데 의도치 않게 엄한 값이 나오게 된다. 위의 쉘 실행 결과는 9가 나온다. 이유는 모르겠다만 유닉스가 8진수로 인식을 하고 연산을 해서 8+1 해서 9가 되어 버린다. 그러면 앞에 0을 어떻게 땔 것인가? 복잡한 방법도 있겠지만 심플하게는 10진수라고 명시를 해 주면 된다. let var=10#0011*1;echo $var 원하는 10진수 숫자값을 얻을 수 있을 것이다. 2020. 2. 11. unix] cp 할때 에러 발생 잡아내기 shell 작성을 하다가 복사하는데 오류가 발생을 하면 잡아내야 할 일이 생겼다. 각설하고 코드는 아래와 같다. if [[ $1 -eq 10 ]] then cp a.txt b.txt elif [[ $2 -eq 20 ]] then cp a.txt c.txt fi if [ "$?" != "0" ] then echo "error" 1>&2 exit -1 fi echo "ok" control-m 에서 선행작업으로 처리를 하는 건데 -1로 리턴하면 실패로 인식을 한다. 그리고 if elif 로 조건을 한번에 잡아야 한다. $? 에는 바로 이전 결과만 담고 있어서 각각 if 처리 하려면 따로 처리해야 하므로 주의해야 한다. (이거 때메 삽질 좀 했음..) 2019. 8. 6. 이전 1 다음 반응형