বাশ স্ক্রিপ্ট ত্রুটি: ./est: লাইন 5: ইউআইডি: পঠনযোগ্য পরিবর্তনশীল


9

আমার একটি স্ক্রিপ্ট রয়েছে যা আমার ডেভ সার্ভারে ঠিক আছে but

আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি যা আমি বুঝতে পারি না:

./test.sh: লাইন 5: ইউআইডি: পঠনযোগ্য পরিবর্তনশীল

কোন পরামর্শ?

#!/bin/sh

    while read inputline
    do
     UID="$(echo $inputline | cut -d '"' -f4)"
     PASSWORD="$(echo $inputline | cut -d '"' -f8)"
     FIRST="$(echo $inputline | cut -d '"' -f6 | cut -d ' ' -f1)"
     LAST="$(echo $inputline | cut -d '"' -f6 | cut -d ' ' -f2)"    

    zmprov createAccount $UID $PASSWORD displayName "$FIRST $LAST" givenName $FIRST sn $LAST    

    done < company.csv

উত্তর:


17

আপনার শেল স্ক্রিপ্টগুলিতে ছোট হাতের অক্ষরগুলি ব্যবহার করা ভাল ধারণা, কারণ বড় হাতের অক্ষরগুলি সাধারণত শেল ইন্টার্নালের জন্য সংরক্ষিত থাকে। (পরিবেশের ভেরিয়েবলগুলি এর ব্যতিক্রম, তবে সত্যই একইরকম আচরণ করা উচিত, বিশেষ অর্থগুলির সাথে যে জিনিসগুলি আপনি কী করছেন তা না বুঝে নির্বিচারে পরিবর্তন করা উচিত নয়)) এই ক্ষেত্রে, ইউনিক্সে এটি চলছে যা bashসেট $UIDচলছে running এর অধীনে রয়েছে এবং এটিকে পরিবর্তন করার অনুমতি দেবে না বা ভেরিয়েবলটি অন্য কোনও কিছুর জন্য ব্যবহার করা যাবে না। bash( কিছু প্ল্যাটফর্মের অথবা অন্য কোনও শেল shহতে পারে) ছাড়া অন্য শেলগুলি সেভাবে dashব্যবহার করতে পারে না $UIDএবং যদি bashবোর্নে শেল সামঞ্জস্যতা মোডে কাজ করার জন্য তৈরি করা হত sh(যা ডিফল্ট, তবে অনেক লিনাক্স ডিস্ট্রিবিউশন এটি অক্ষম করে) এটি জিতেছে ' টি ট্রিট$UID বিশেষ হিসাবে।


5

UIDআপনার স্ক্রিপ্টটি যেভাবে চলছে সেই আইডি সম্পর্কিত তথ্য সহ সিস্টেম সংরক্ষিত পরিবর্তনশীল। সিস্টেমটি ব্যবহার করতে পারে এমন স্ট্যান্ডার্ড ভেরিয়েবল নাম ব্যবহার না করার জন্য আপনার সতর্ক হওয়া উচিত। আপনি envবর্তমানে কী সেট করা আছে তার একটি তালিকা পেতে আপনি ব্যবহার করতে পারেন । এগুলির কোনও পরিবর্তন করবেন না। আপনি ভেরিয়েবলের নামগুলি গুগল করে দেখতে পারেন যে আপনি যদি তাদের সাথে এগিয়ে যাওয়ার আগে অন্য ব্যবহারকারীদের সাথে সন্ধান করেন।

এই ক্ষেত্রে, লোয়ার কেস ব্যবহার করা সম্ভবত আপনার সমস্যার সমাধান করবে যেহেতু কেবলমাত্র বড় হাতের অক্ষরগুলি সংরক্ষিত থাকে তবে আপনি নিজের ভেরিয়েবলগুলিকে $ ইনপুট_উইড জাতীয় কিছু বলে আখ্যায়িত করতে পারেন তাই এটি স্পষ্ট যে মানটি স্ক্রিপ্টে ইনপুট থেকে এসেছে। এটি দীর্ঘ সময় ধরে আপনার কোড বজায় রাখা সহজ করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.