2014-09-25 2 views
0

안녕하세요 저는 명령을 읽고 일부 줄에 인쇄하고 싶습니다.일부 행을 읽고 에코 넣기 Bash

예 : 가 나는 a에 값을 읽어 b 다음 이러한 값과 연산 결과 에코 기능 사용

1. $ 5 plus 5 
2. $ = 10 

I 변수를 판독하고 라인 1에서를 ab, 그 후 나는 결과를 입력하고 echo을 입력했지만 새로운 라인에있다. 읽기 명령은 터미널에 입력하고 입력해야 새로운 줄을 제공합니다.

것처럼 보일 것입니다 방법 : 나는 행운과 sed를 사용하려고

1. $ 5 plus 5 = 10 

.

편집 : 나는 간단한 사용하고 있습니다 :

$read a b c 
#a=5 b=plus c=5 
+0

문자열 '5 plus 5'에서 읽는 명령은 무엇입니까? – anubhava

+0

Bash의 내부 구조를 수정하지 않고도 이것이 가능하다는 확신이 없습니다. 내부적으로 명령을 실행하면 Bash는 커서를 다음 행으로 이동시킵니다. Enter 키를 눌러 줄 바꿈 문자 나 캐리지 리턴 문자가 나오지 않도록 소스를 수정해야 할 수 있습니다. –

+0

나는 그것이 가능 할까하고 궁금해하고 있었다. 따라서 해결 방법을 사용할 수 있습니다 : '$ clear && echo $ a $ b $ c $ result'그리고 결과가 마지막에 추가 된 것처럼 보일 것입니다. – Marko

답변

1

한 줄 위로 이동하고 라인을 취소 ANSI 이스케이프 코드를 사용 :

#!/bin/bash 
read -p 'equation: ' operand1 operation operand2 
# magic to transform "plus" to "+" left to the reader 
let answer="$operand1 $operation $operand2" 
echo -e "\033[F\033[K$operand1 $operation $operand2 = $answer" 

REF : 반사시 https://en.wikipedia.org/wiki/ANSI_escape_code

을, I 그 내용을 명료화하기 위해 2 개의 진술로 나누었습니다 :

echo -ne "\033[F\033[K" # move the cursor and clear the line 
echo "$operand1 $operation $operand2 = $answer" 
+0

아주 좋아요, 고마워요. 나는 이것이 나를 위해 충분하다고 생각한다. – Marko

관련 문제