003 계산 (1+1)

2024. 1. 31. 03:12b정리/아트 오브 셸 원라이너

728x90
반응형

dnf -y install num-utils ruby
echo '1+1' | sed 's/.*/echo $((&))/' | bash

echo '1+1':

문자열 '1+1'을 표준 출력에 출력합니다.

`sed 's/.*/echo $((&))/':

sed 명령어를 사용하여 문자열 '1+1'을 가로안에 있는 내용으로 치환합니다.
s/.*/echo $((&))/에서 .*는 원래 문자열을 나타내며, 이를 echo $((&))로 치환합니다.
$((&))는 sed 명령어에서 현재 패턴을 의미하며, 여기서는 '1+1'이 됩니다.

bash:

최종적으로 bash를 사용하여 앞서 생성된 명령어인 echo $((1+1))를 실행합니다.
echo $((1+1))는 산술 평가를 통해 1+1을 계산하고 결과값을 출력합니다.
echo '1+1' | sed 's/^/puts /' | ruby

echo '1+1':

문자열 '1+1'을 표준 출력에 출력합니다.

sed 's/^/puts /':

sed 명령어를 사용하여 문자열 '1+1'의 시작 부분(^)에 "puts "를 추가합니다.
s/^/puts /에서 ^는 문자열의 시작을 의미하며, 이를 "puts "로 치환합니다.

ruby:

최종적으로 ruby를 사용하여 앞서 생성된 코드인 puts 1+1를 실행합니다.
puts는 Ruby에서 사용되는 출력 함수이며, 1+1은 산술 연산을 나타냅니다.
echo '1+1' | tr + ' ' | numsum -r

echo '1+1':

문자열 '1+1'을 표준 출력에 출력합니다.

tr + ' ':

tr 명령어를 사용하여 문자열 '1+1'에서 '+'를 공백으로 변환합니다.
tr + ' '에서 +를 ' '(공백)으로 치환합니다.

numsum -r:

numsum 명령어를 사용하여 숫자를 합산합니다.
-r 옵션은 결과를 출력할 때 'Result: '를 함께 표시합니다.


따라서 실행 결과로는 "Result: 2"가 터미널에 출력될 것입니다. 
이 명령어는 '1+1'을 받아서 공백으로 구분된 숫자로 변환한 다음, 
numsum을 사용하여 숫자를 합산하여 결과를 출력하는 것입니다.
echo '1+1'  | sed 's/./& /g' | xargs expr

echo '1+1':

문자열 '1+1'을 표준 출력에 출력합니다.

sed 's/./& /g':

sed 명령어를 사용하여 문자열 '1+1'에서 각 문자 사이에 공백을 추가합니다.
s/./& /g에서 .은 문자 하나를 나타내며, 각 문자를 자기 자신과 공백으로 치환합니다.

xargs expr:

xargs 명령어를 사용하여 expr에 전달합니다. xargs는 표준 입력에서 받은 데이터를 명령어 
인자로 변환해주는 역할을 합니다.
expr는 산술 표현식을 평가하는 명령어입니다.
echo '1+1' | sed 's/./& /g' | sed 's/^/expr /e'

원래 문자열 출력:

echo '1+1'
출력: 1+1

첫 번째 sed를 사용하여 각 문자 사이에 공백 추가:

echo '1+1' | sed 's/./& /g'
출력: 1 + 1
이전과 마찬가지로 각 문자 뒤에 공백을 추가합니다

두 번째 sed를 사용하여 각 줄의 처음에 "expr " 추가:

echo '1+1' | sed 's/./& /g' | sed 's/^/expr /'
출력: expr 1 + 1
s/^/expr /에서 ^는 문자열의 시작을 의미하며, 각 줄의 처음에 "expr "을 추가합니다.

echo '1+1' | sed 's/./& /g' | sed 's/^/expr /e'
출력: 2
이제 각 줄은 "expr"로 시작하는 문자열로 치환되었으며,
bash에서는 이를 평가하여 결과값 "2"가 출력됩니다.

 

반응형

'b정리 > 아트 오브 셸 원라이너' 카테고리의 다른 글

006 파일 권한  (0) 2024.01.31
005 파일과 디렉터리 조작  (0) 2024.01.31
004 파일에 저장  (0) 2024.01.31
002 명령어 중단  (1) 2024.01.31
001 터미널 사용  (0) 2024.01.31