본문 바로가기
반응형

TechNical/Unix12

unix에서 문자를 숫자형식으로 간단히 변환하기 0으로 채워서온 필드에서 해당 영역만큼 잘라서 숫자형식으로 표기를 할때, 0001이라는 문자는 숫자로는 1을 의미한다. 이거를 요렇게 해보면.. echo $((0001)) 그러면 예쁘게 1이 찍힌다. 그런데 0010을 찍어 본다면? echo $((0010)) 말도 안되게 8이 찍힌다. 환경에 따라 다를 수도 있다. unix가 이걸 8진수로 인식을 하는 것 같다. 그래서 10진수라고 명시를 해 줘야 한다. echo $((10#0010)) 이렇게 하면 예쁘게 10이 찍히는 걸 볼 수 있다. 역시나 테스트를 할 때는 문제가 될 만한 여러가지 케이스를 상정해서 해 봐야 한다..... ps. 쓰고 보니 2년전에도 똑같은 짓을 했군........ 2022. 11. 8.
unix sendmail html format unix에서 html 포맷으로 메일을 발송해보자. mailx 는 간단하게 발송할 수 있는데 별짓을 다 해봐도 html 양식으로는 발송이 안 된다. 무슨 패키지를 깔면 된다는데 막 설치 할 수도 없어서 sendmail을 사용하기로 했다. ( echo "From: aaa@aa.com" echo "To: aaa@aa.com" echo "Cc: aaa@aa.com" echo "MIME-Version: 1.0" echo "Subject: mail title" echo "Content-Type: text/html" cat htmlformatfile.html ) | sendmail -t html 파일을 만들어서 cat으로 붙여 넣는거다. html 파일은 줄바꿈이 잘 되어 있어야 아웃룩에서 html형식이라고 인식한다... 2022. 11. 7.
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.
반응형