कमांड लाइन तर्क के रूप में आप किसी संख्या को कैसे जोड़ते हैं?


10

मैं कमांड लाइन से 1 नंबर जोड़ने की कोशिश कर रहा हूं, और एक नंबर डिफ़ॉल्ट की तरह। उदाहरण के लिए: जब उपयोगकर्ता संख्या ५० में लिखता है तो स्क्रिप्ट १० जोड़ देगा (डिफ़ॉल्ट संख्या के रूप में)।

./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आईएनजी के बजाय और फिर 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 चलाने में क्यों परेशान करें?
पीएम 2Ring

15

आपके पास "इन्टरनेट = डिफ़ॉल्ट" 10 "स्पेस" नहीं होना चाहिए और चर से पढ़ने के लिए डिफ़ॉल्ट और संख्या $ भी होनी चाहिए।

स्क्रिप्ट तब मेरे लिए उम्मीद के अनुसार काम करती है, जब नीचे की तरह लिखा जाता है;

#!/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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.