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


14

এটি একটি খুব সহজ লিপি

#!/usr/local/bin/bash
set -e
if [ "$#" -lt 1 ]
then
echo  "Please insert at least one argument"
exit
else
echo -e "\c"
fi


if [ -h  "$1" ]
then
         echo "$1 is a symbolic link"
else    
         echo "$1 in not a symbolic link"
fi

~
আমার প্রশ্ন: 1 টির বেশি আর্গুমেন্টকে স্বীকৃতি দেওয়ার জন্য স্ক্রিপ্টটি কীভাবে পরিবর্তন করবেন? আমার কাছে 4 টি ফাইল রয়েছে এবং আমি চাই স্ক্রিপ্টটি ফিরে আসুক

$1 is a symbolic link
$2 is not a symbolic link
$3 is not a symbolic link

ইত্যাদি

আমি এই কিভাবে করতে পারে?

উত্তর:


10

আপনার মূল স্ক্রিপ্টের মতো একই কাঠামোটি ব্যবহার করে আপনাকে কেবল $@অ্যারের উপরে পুনরাবৃত্তি করতে হবে (এটি কমান্ড লাইনে দেওয়া আর্গুমেন্টগুলির তালিকা):

#!/usr/local/bin/bash
set -e
if [ "$#" -lt 1 ]
then
echo  "Please insert at least one argument"
exit
else
echo -e "\c"
fi


for file in "$@"
do
    if [ -h  "$file" ]
    then
         echo "$file is a symbolic link"
    else    
         echo "$file is not a symbolic link"
    fi
done

একই জিনিসটির সরলীকৃত সংস্করণটি হ'ল:

#!/usr/bin/env bash
[ "$#" -lt 1 ] && printf "Please give at least one argument\n" && exit 
for file 
do
    [ -h "$file" ] && printf "%s is a symbolic link\n" "$file" || 
        printf "%s is not a symbolic link\n" "$file"
done

7

শিফটের কথা কেউ উল্লেখ করেনি?

if [ x = "x$1" ] ; then
    echo need at least one file
    exit 1
fi

while [ x != "x$1" ] ; do
  if [ -h  "$1" ]; then
    echo "$1 is a symbolic link"
  else    
    echo "$1 is not a symbolic link"
  fi
  shift
done

5

স্ক্রিপ্টে পাস করা সমস্ত ফাইল প্রক্রিয়া করতে আপনি লুপের জন্য ব্যবহার করতে পারেন :

for f do
  if [ -h  "$f" ]; then
    printf "%s is a symbolic link\n" "$f"
  else    
    printf "%s is not a symbolic link\n" "$f"
  fi
done

3

আরেকটি shift:

: "${1?USAGE: "$0" files...}"
while   [ "$#" -gt 0 ]
do      [ -h "$1" ]
        printf "'%s' is %.$((!$?*4))s%s\n" \
               "$1" "not " "a symbolic link." 
shift;  done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.