কিভাবে শেল স্ক্রিপ্ট পরিবর্তনশীল ভরাট খুঁজে পেতে ব্যবহার করুন


0

আমি সহজ শেল স্ক্রিপ্ট কিছু বিরক্তিকর-কখনও পুনরাবৃত্তি কাজ তৈরি করছি। স্ক্রিপ্ট সঠিকভাবে ডিরেক্টরি পরিবর্তন করে, এবং এখন আমি স্ক্রিপ্ট চালানোর সময় টাইপ করা যুক্তি অনুসারে অন্যান্য স্ক্রিপ্ট চালাতে চাই। অন্যান্য স্ক্রিপ্ট সাবডিরেক্টরিতে ছড়িয়ে পড়ে এবং প্রতিটি এক অনন্য। তাই আমি শুধু ফাইলের নাম সন্নিবেশ করতে চাই এবং স্ক্রিপ্টটিকে খুঁজে বের করতে চাই যাতে এটি ফাইলটি সাবডিরেক্টরি হয়।

আমি এই মত কিছু চেষ্টা:

filename="default.ini"
while [ $# -gt 0 ] 
do
    case "$1" in
        -f) filename="$(find ./ -name $2)"; shift;;
        -*) echo >&2 \
            "usage: $0 [-v] [-f file] [file ...]"
            exit 1;; 
        *)  break;;     # terminate while loop
    esac
    shift
done

echo $filename

কিন্তু, ফলাফল কোন ফলাফল ফিরে না, তাই এটি থাকে default.ini। এই সমাধানের অন্য উপায় আছে?


খুঁজে পাওয়া যায় ./ আসলে আপনি কি মনে করেন উচিত? ডান ডিরেক্টরি খুঁজছেন খুঁজে পাওয়া যায়?
glenn jackman

উত্তর:


1

আমি পরামর্শ দেব যে এটি প্যারিসিং বিকল্পগুলির একটি আরও নিরপেক্ষ উপায়:

filename="default.ini"
v_opt=false

while getopts :vf: opt; do
    case $opt in 
        f) find_out=$(find . -name "$OPTARG") 
           # do something with $find_out, such as checking if it's empty, or
           # if more than one file was found ...
           [[ $find_out ]] && filename=$(head -n 1 <<< "$find_out")
           ;;
        v) v_opt=true ;;
        ?) echo "usage: ..."; exit 1;;
    esac
done
shift $((OPTIND-1))

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