명령 행 인수로 숫자를 어떻게 추가합니까?


10

명령 줄에서 1 개의 숫자를 추가하려고하고 기본적으로 하나의 숫자를 추가하려고합니다. 예를 들어, 사용자가 숫자 50을 입력하면 스크립트는 10을 기본 숫자로 추가합니다.

./script 50
The sum of 50+ 10 is 60. 

이것이 내가 지금까지 가진 것입니다.

echo -n "Please enter a number: " 
read number 
default = 10
sum = $((default + number)) // this line does not seem to work
echo "The sum of $number and 10 is $sum."

구문이 잘못 되었습니까? 올바른 길을 가고 있는지 잘 모르겠습니다. 숫자를 잘못 추가하고 있습니까? 대신 awk를 사용해야합니까?

let sum = $default + $number 

추가 echo하는 대신 ing 대신 read직접 사용법을 입력 할 수 있습니다.read -p 'Please enter a number: ' yournumber
Tyþë-Ø

답변:


2

공백으로 인해 오류가 발생했습니다.

"숫자를 입력하십시오 :"라는 메시지가 표시 될 때 사용자가 숫자를 입력하게하려면 다음과 같이 수정하여 스크립트를 사용할 수 있습니다.

#!/bin/bash
echo -n "Please enter a number: " 
read number 
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."

검사:

./temp.sh
Please enter a number: 50
The sum of 50 and 10 is 60.

사용자가 스크립트에 인수로 숫자를 입력하도록하려면 아래 스크립트를 사용할 수 있습니다.

#!/bin/bash
number="$1"
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."

검사:

./temp.sh 50
The sum of 50 and 10 is 60.

3
왜 간단한 정수 산술을하기 위해 bc를 실행해야합니까?
PM 2Ring

15

"default = 10"과 "sum = $"사이에 공백이 없어야하며 default 및 number는 변수에서 읽을 수 있도록 $가 있어야합니다.

스크립트는 다음과 같이 작성 될 때 예상대로 작동합니다.

#!/bin/bash

echo -n "Please enter a number: " 
read number 
default=10
sum=$(($default + $number))
echo "The sum of $number and 10 is $sum."

아 알 겠어요! 이제 알겠습니다. 간격 문제 일뿐입니다. 나는 정말로 이것을 생각했다. 도움을 주셔서 감사합니다!
techiegeek

3
당신이주의 하지 않는 를 사용할 필요가 $산술 식 내부. 예를 들어, 다음을 시도하십시오 :num=5;def=10;echo "sum = $((num + def))"
PM 2Ring

4

이것은 당신이 요구하는 것을하는 가장 빠른 방법입니다.

#!/bin/bash
echo "The sum of $1 + 10 is $(($1 + 10))."

산출:

creme@fraiche:~/$ ./script.sh 50
The sum of 50 + 10 is 60.

1
그것은 위험 할 수 있습니다-시도./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
mikeserv

@ mikeserv 매우 정확하지만 운동의 경우 걱정인지 확실하지 않습니다. 의견에 관계없이 감사합니다.
cremefraiche
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.