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


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.