쉘 프로그래밍을 하다가 수 연산을 해야 될 때가 있었습니다. 이럴 때 어떻게 해야 할까요? bash 메뉴얼 문서를 보면, $(( expression )), (( compound 방법을 소개하고 있습니다. 이에 따르면 expression은 $a+$b가 됩니다. a는 3이므로, $a는 3으로 대치됩니다. 그리고, $b는 4로 대치됩니다. 즉, 우리는 3 + 4가 (( 안에 있기 때문에, 3 + 4를 산술 연산으로 평가하게 됩니다.3 + 4는 유효한 산술 표현식이므로 결과적으로 7이 리턴됩니다. 결과를 출력해 보니, 정말 그러하네요. 그러면 이건 어떨까요? 3+4라는 expression이 있습니다. ((로 감싸져 있으므로, 3+4가 산술 연산식으로 평가됩니다. 따라서, c는 3+4의 산술 연산 결과값인 7이 ..
shell 검색 결과
입력을 받아야 하는 문제는 꽤 많이 보입니다. shell에서는 read를 쓸 수 있는데요. 어떻게 해야 하는지 간단하게 알아봅시다. 먼저, read a는 1줄을 읽어서, 변수 a에 저장합니다. echo $a는, a에 저장된 값을 출력하는 것인데요. 이 쉘 프로그램은, 한 줄을 입력받아서 a에 저장한 뒤에, a의 값을 출력하는 것입니다. 실행해 보겠습니다. 저는 2 4 6 8을 입력했습니다. 입력한 값이 2 4 6 8이였으므로, 출력은 2 4 6 8이 됩니다. 그런데, 공백을 기준으로 받아야 할 경우도 있습니다. 이 때에는 문서에 나온 IFS를 이용하면 됩니다. 한 마디로 spliter의 역할을 한다고 보시면 됩니다. result를 split 하는데, IFS를 " "로 주면, 공백 문자를 기준으로 spli..
저번에 seq 명령어에 대해서 이야기 한 적이 있었습니다. 이것을 이야기 하면서, 쉘 프로그래밍에서 꽤나 유용하게 쓰일 법 하다고 언급을 했는데요. 예제를 통해서 알아보도록 하겠습니다. [관련글] 쉘 스크립트에서 $()과 $의 차이점이 뭔가요? seq 명령어에 대해 알아봅시다. 먼저, 1 row, 2 row, ... , 10 row를 출력해야 한다고 생각해 보겠습니다. 그럴 때 어떻게 하면 좋을까요? 단지, for in 문을 곁들이면 됩니다. 1부터 10까지 도는 것은 $(seq 10)에서 처리합니다. 이 글을 보시면, $()는 명령어의 실행 결과로 대치된다고 설명이 되어 있어요. 예를 들자면 $(seq 10)은 단지 1 2 3 4 5 6 7 8 9 10으로 대치될 뿐입니다. 그래서, 사실 이 쉘 프로그..
최근댓글