কমান্ড লাইন আর্গুমেন্ট হিসাবে আপনি কীভাবে একটি সংখ্যা যুক্ত করবেন?


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."

আমার কি সিনট্যাক্সটি ভুল আছে? আমি সঠিক পথে নেই কিনা তা নিশ্চিত নই। আমি কি সংখ্যা গুলো ভুল করছি? এর বদলে কি আমার ব্যবহার করা উচিত?

let sum = $default + $number 

কেবল যোগ করার পরিবর্তে echoreadread -p 'Please enter a number: ' yournumber
আইং

উত্তর:


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
খালি বিসি চালানো কেন কেবল সংখ্যার পাটি গণিত করতে বিরক্ত করবেন?
প্রধানমন্ত্রী 2 রিং

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))"
দুপুর

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]))'
মাইকসার্ভ

@ মিমিকার্ভস খুব নির্ভুল, তবে অনুশীলনের জন্য আমি নিশ্চিত নই যে এটি উদ্বেগের বিষয় কিনা। নির্বিশেষে আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ।
ক্রেমিফ্রেইচে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.