ইনস্টল করা থাকলে পিপিএ এড়াতে শেল স্ক্রিপ্ট


8

আমি এমন একটি স্ক্রিপ্ট তৈরি করতে চাই যা একটি নতুন পিপিএ যুক্ত করবে বা ইতিমধ্যে ইনস্টল করা থাকলে এড়িয়ে যাবে।

কেউ এই প্রশ্নের সমাধান একটি ভিন্ন প্রশ্নের পোস্ট করেছেন:

#!/bin/bash 

add_ppa() {
      for i in "$@"; do
        grep -h "^deb.*$i" /etc/apt/sources.list.d/* > /dev/null 2>&1
        if [ $? -ne 0 ]
        then
          echo "Adding ppa:$i"
          sudo add-apt-repository -y ppa:$i
        else
          echo "ppa:$i already exists"
        fi
      done
    }

শেল স্ক্রিপ্ট শর্তসাপেক্ষে অ্যাপস সংগ্রহস্থল যুক্ত করতে

আমার ক্ষেত্রে আমি যুক্ত করতে চাই ppa:otto-kesselgulasch/gimp-edge, তবে স্ক্রিপ্টে এটি কোথায় যুক্ত করার কথা তা নিশ্চিত নয়।

আমি চেষ্টা করেছিলাম add_ppa(ppa:otto-kesselgulasch/gimp-edge)কিন্তু বলার ক্ষেত্রে আমি ত্রুটি পেতে থাকি ( ppaএটি আমার স্ক্রিপ্টের নাম):

ppa: 1: ppa: Syntax error: word unexpected (expecting ")")

আমি পিপিএর মধ্যে এবং ছাড়াও একটি স্থান দিয়ে চেষ্টা করেছি ()

ppa: 1: ppa: add_ppa: not found
ppa: 12: ppa: Syntax error: "}" unexpected

কেউ কি আমাকে বলতে পারে আমি কী ভুল করছি?


2
আপনার স্ক্রিপ্টটি অন্তর্ভুক্ত করতে আপনার প্রশ্নটি সম্পাদনা করা কার্যকর হবে , সমস্যাগুলি কোথায় রয়েছে তা নির্ণয় করা আরও সহজ করে তোলে।
অ্যারোনিকাল

উত্তর:


9

এটি একটি বাশ ফাংশন, এবং ব্যাশ ফাংশনগুলিতে যুক্তিগুলি সরবরাহ করার জন্য আপনার প্রয়োজন হবে না ()। এছাড়াও, ফাংশনটি ppa:তার যুক্তিগুলির সাথে উপসর্গ যুক্ত করে , তাই এটি কেবল এটি করে:

add_ppa otto-kesselgulasch/gimp-edge

অতিরিক্তভাবে, ফাংশনটি একাধিক যুক্তি সমর্থন করে, তাই আপনি এটি একাধিক পিপিএর জন্য চালাতে পারেন:

add_ppa otto-kesselgulasch/gimp-edge foo/bar a/b

আপনি একটি স্ক্রিপ্টে ফাংশনটি রেখেছেন তা প্রদত্ত, আপনার উচিত হয়:

  • Zanna আপনার শেলের মধ্যে ফাংশনটি পেতে এবং ফাংশনটিতে কল করতে পরামর্শ হিসাবে এটি উত্স, বা or
  • স্ক্রিপ্ট হিসাবে কেবল ফাংশনের বিষয়বস্তু ব্যবহার করুন:

    #! /bin/bash
    for i in "$@"; do
      if grep -Rq "^deb.*$i" /etc/apt/sources.list.d/*.list
      then
        echo "Adding ppa:$i"
        sudo add-apt-repository -y ppa:$i
      else
        echo "ppa:$i already exists"
      fi
    done
    

    এবং পিপিএর নাম সহ স্ক্রিপ্টটি কল করুন:

    ppa otto-kesselgulasch/gimp-edge

3
পার্শ্ব নোটের মতো, আপনি ড্রপ করতে পারেন in "$@"; for i; doঅবস্থানগত পরামিতি উপর লুপ।
কেভিন

6

আমি মনে করি আপনি স্ক্রিপ্ট হিসাবে ফাইলটি চালাচ্ছেন, তবে এটি কেবল একটি ফাংশন সংজ্ঞা, সুতরাং এটি সঞ্চালনের সময় ফাংশনটি কখনই ডাকা হয় না।

আপনার এতে কিছু যুক্ত করার দরকার নেই; আপনার এর ভিতরে কোথাও পিপিএ যুক্ত করার দরকার নেই। আপনি sourceফাইলটি করতে পারেন এবং তারপরে বর্তমান শেলটিতে ফাংশনটি কল করতে পারেন :

. ppa
add_ppa otto-kesselgulasch/gimp-edge

(ধরে নিলে যে ফাইলটি আপনি এটি সংরক্ষণ করেছেন তাকে বলা হয় ppa, এটি বর্তমান ওয়ার্কিং ডিরেক্টরিতে রয়েছে এবং আপনি যে উদাহরণটি পোস্ট করেছেন ঠিক তেমন সামগ্রী রয়েছে)

আপনি এটি কোনও স্ক্রিপ্ট হিসাবে চালাতে পারেন, যদি আপনি কোনও লাইন যুক্ত করেন যা আসলে ফাংশনটিকে কল করে। আপনি এর শেষে এই জাতীয় একটি লাইন যুক্ত করে পিপিএটিকে হার্ড-কোড করতে পারেন:

add_ppa otto-kesselgulasch/gimp-edge

এবং তারপরে স্ক্রিপ্টটি চালান। তবে এই বার, আপনি যখনই নতুন পিপিএ যুক্ত করতে চেয়েছিলেন তখন ফাইলটি সম্পাদনা করতে হবে ...

পরিবর্তে আপনি স্ক্রিপ্টে পাস হওয়া সমস্ত আর্গুমেন্টগুলিতে এই জাতীয় একটি লাইন যুক্ত করে ফাংশনটি কল করতে পারেন:

add_ppa "$@"

তারপর যখন স্ক্রিপ্টটি বলা হবে:

./ppa otto-kesselgulasch/gimp-edge thing/stuff etc/andSoOn

3

দেখে মনে হচ্ছে আপনি বিশেষভাবে add_ppaফাংশনের সংজ্ঞা অনুসারে আপনার স্ক্রিপ্টে একটি টাইপ করেছেন ।

ত্রুটি বার্তা:

ppa: 1: ppa: add_ppa: not found
ppa: 12: ppa: Syntax error: "}" unexpected

ইঙ্গিত দেয় যে add_ppa একটি ফাংশন হিসাবে স্বীকৃত হচ্ছে না।

মনে হচ্ছে যে আপনি ব্যবহার করে ফেলেছেন (স্থানে {যখন ফাংশন সংজ্ঞায়িত। এই ভুলটি সংশোধন করুন এবং ফাংশনটি সঠিকভাবে কাজ করা উচিত, যদিও এটি মুরুর উত্তরে নির্দেশিত হিসাবে ব্যবহার করা উচিত ।

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