बैश स्क्रिप्ट त्रुटि: ./test: पंक्ति 5: UID: आसानी से चर


9

मेरे पास एक स्क्रिप्ट है जो मेरे देव सर्वर पर ठीक काम करती है लेकिन जब मैं इसे उत्पादन में चलाने की कोशिश करता हूं तो यह काम नहीं करता है।

मुझे निम्नलिखित त्रुटि मिल रही है जिसे मैं समझ नहीं पा रहा हूं:

./test.sh: पंक्ति 5: UID: पठनीय चर

कोई सुझाव?

#!/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यूनिक्स के लिए यह चल रहा है uid के तहत, और इसे बदलने की अनुमति नहीं देगा या चर को किसी और चीज के लिए इस्तेमाल किया जाएगा। के अलावा अन्य के गोले bash( shहो सकता है dashया कुछ प्लेटफॉर्म पर कुछ अन्य खोल) का उपयोग नहीं कर सकते हैं $UIDकि जिस तरह से है, और अगर bashबॉर्न शैल संगतता मोड में काम करने के लिए बनाया गया था जब के रूप में लागू किया sh(जो डिफ़ॉल्ट है, लेकिन कई लिनक्स वितरण को अक्षम) यह जीता ' टी ट्रीट$UID विशेष रूप से या तो।


5

UIDउपयोगकर्ता आईडी के बारे में जानकारी के साथ एक सिस्टम आरक्षित चर है जो आपकी स्क्रिप्ट के रूप में चल रहा है। आपको सावधान रहना चाहिए कि मानक चर नाम का उपयोग न करें जो सिस्टम उपयोग कर रहा हो। आप envवर्तमान में सेट की गई सूची प्राप्त करने के लिए उपयोग कर सकते हैं । उनमें से कोई भी मत बदलो। आपके द्वारा आगे बढ़ने से पहले वे यह भी देख सकते हैं कि वे अन्य उपयोगकर्ताओं में बदल जाते हैं या नहीं।

इस मामले में, निचले मामले का उपयोग करना संभवत: आपकी समस्या को ठीक करेगा क्योंकि केवल ऊपरी केस वेरिएंट आरक्षित हैं, लेकिन आप अपने चर को $ input_uid जैसे कुछ कहकर अद्वितीय बना सकते हैं, इसलिए यह स्पष्ट है कि स्क्रिप्ट से मूल्य आया था। इससे आपके कोड को लंबे समय तक बनाए रखने में आसानी होगी।

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