কোনও স্ক্রিপ্টে আর্গুমেন্টের মান কীভাবে পরিবর্তন করবেন?


11

আমি নিম্নলিখিত ছোট ছোট স্ক্রিপ্ট চেষ্টা করেছি:

#!/bin/bash
$1="bar"
echo $1

তবে আমি যখন চালনা ./script fooকরি তখন ত্রুটি পাই এবং মানটি পরিবর্তন হয় না:

/home/mika/script: line 2: foo=bar: command not found
foo

আমি জানি $ 1 হ'ল প্রথম যুক্তি যা আপনি আপনার স্ক্রিপ্টে পাস করেন। তবে এটির মতো আমিও এর মান পরিবর্তন করতে চাই।


উত্তর:


10

আপনি বিল্টিন ব্যবহার করতে পারেন set:

#!/bin/bash
set -- "bar"
echo $1

উত্স এবং আরও: একটি কমান্ড লাইন আর্গুমেন্ট পরিবর্তন করুন - বাশ


আমি চেষ্টা করেছিলাম, কিন্তু এটি এখনও "ফু" প্রতিধ্বনিত হয়েছে। আপনি কি আলাদা ফলাফল পেয়েছেন? স্ক্রিপ্টে "ফু" পাস করার বিষয়ে নিশ্চিত হন।
মার্টি ফ্রাইড

@ মার্টিফ্রিড আপস, দুঃখিত ... আমি আমার উত্তরটি আপডেট করেছি।
রাদু রেডানু

ওই কাজগুলো. :-) ভাল উত্তর ... আমি মনে করি আমি ধরে নিচ্ছিলাম যে সে এটি করতে চায় না, এবং কেন সে করবে তা আমি নিশ্চিত নই, তবে আপনার উত্তরটি কেবল এটি না করার আমার পরামর্শের চেয়ে সত্য। লিঙ্কের জন্য ধন্যবাদ।
মার্টি ফ্রাইড

4

আপনি সরাসরি এই পরিবর্তনকগুলি পরিবর্তন করতে পারবেন না। তুমি বলতে পার:

x=$1
echo $x

তারপরে আপনি এর $xপরিবর্তে ব্যবহার করতে পারেন

ব্যবহারের সাথে $1=barসাথেই প্রথম প্যারামিটারটির বিকল্প হবে $1এবং আপনি মূলত বক্তব্য রাখেন "foo=bar"এবং এটি "foo" কমান্ড হিসাবে ব্যাখ্যা করা হয়, ভেরিয়েবল "foo" নয়;


দুর্দান্ত ধারণা, তবে ওপেন আমার কাছ থেকে ঠিক কী সম্পাদন করতে চায় তা নির্ভর করে ... +1
রাদু রেদেনু

2

এটির $1জন্য bash, এবং অন্যান্য শাঁসের জন্য ব্যবহার করবেন না , $1এটি আপনি আপনার স্ক্রিপ্টে প্রথম যুক্তিটি পাঠান:

#!/bin/bash
echo $1

আপনি যদি উপরের হিসাবে চালনা করেন তবে foo.sh helloএটি মুদ্রণ করবে helloযেহেতু এটি প্রথম যুক্তি। এছাড়াও, আপনি কোনও ভেরিয়েবল হিসাবে varএবং কোনও ভেরিয়েবলের বিষয়বস্তু হিসাবে উল্লেখ করেন $var। সুতরাং, আপনি যে আচরণটি প্রত্যাশা করছেন তা পেতে, আপনার ভেরিয়েবলের জন্য অন্য একটি নাম ব্যবহার করুন এবং একটি ব্যবহার করবেন না $:

#!/bin/bash
var="bar"
echo $var

আমি কী চাই তা মানুষকে বোঝানোর জন্য এই ছোট স্ক্রিপ্টটি একটি উদাহরণ ছিল। আমি জানি $ 1 হ'ল প্রথম যুক্তি যা আপনি আপনার স্ক্রিপ্টে পাস করেন। তবে, এমনকি এটির মতো আমিও এর মান পরিবর্তন করতে চাই। আমার এটি আরও একটি বড় স্ক্রিপ্টে প্রয়োগ করা দরকার। ধন্যবাদ.
ব্যবহারকারী 258266

পছন্দ করেছেন নতুন স্ক্রিপ্টটিকে কেবল নতুন মান দিয়ে কল করুন, $1আপনি যে মানগুলি পরিবর্তন করতে চান তার জন্য ব্যবহার করবেন না । যাইহোক, যতক্ষণ আপনি সিনট্যাক্স ত্রুটিটি স্থির করেন ততক্ষণ এটি কাজ করা উচিত, আপনার প্রধান সমস্যাটি হ'ল আপনি এটি ব্যবহার করছিলেন $
টার্ডন

তবে আমার দরকার ... আমি এখানে কেন ব্যাখ্যা করতে পারি না ... সম্ভবত আমি আমার প্রশ্নটি সম্পাদনা করব।
ব্যবহারকারী 258266

@ ব্যবহারকারী 258266 দয়া করে করুন। আপনি একটি পরিবর্তনশীল হিসাবে সেট করার চেষ্টা করছেন $foo="bar", এটি কাজ করে না, foo="bar"এটি ছাড়া আপনার প্রয়োজন $
টার্ডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.