কীভাবে শেল স্ক্রিপ্ট ব্যবহার করে রোটেশন অ্যানিমেশন তৈরি করবেন?


10

আমি একটি স্ক্রিপ্ট একটি আবর্তন অ্যানিমেশান সৃষ্টি চরিত্র ব্যবহার করার জন্য খোঁজ করছি /, -, |এবং \

আপনি যদি এই অক্ষরগুলির মধ্যে অবিচ্ছিন্নভাবে স্যুইচ করেন তবে এটি দেখতে তার ঘোরার মতো হওয়া উচিত। এটি কিভাবে করবেন?

উত্তর:


21

সেই স্ক্রিপ্টটি ব্যবহার করুন:

#!/bin/bash

chars="/-\|"

while :; do
  for (( i=0; i<${#chars}; i++ )); do
    sleep 0.5
    echo -en "${chars:$i:1}" "\r"
  done
done

whileলুপ অসীম চালায়। forলুপ রান দেওয়া স্ট্রিং এর প্রতিটি অক্ষর নালা $charsechoএকটি ক্যারিজ রিটার্ন সহ \r, তবে লাইন ব্রেক ছাড়াই চরিত্রটি মুদ্রণ করে -n-eশক্তি যেমন পালানোর ক্রমগুলি ব্যাখ্যা করতে প্রতিধ্বনি করে \r। প্রতিটি পরিবর্তনের মধ্যে 0.5 সেকেন্ডের বিলম্ব হয়।


চতুর, +1, তবে কেন নয় printf "%s\r" "${chars:$i:1}"?
টেরডন

1
@ এটারডন প্রথম চিন্তা করেছিলেন echo... তবে অবশ্যই printfকাজ করে। ^^
বিশৃঙ্খলা

20

এখানে একটি উদাহরণ ব্যবহার করা হচ্ছে \bযা টার্মিনাল এমুলেটরকে একই অক্ষরটিকে বারবার ওভাররাইট করা চালিয়ে যাওয়ার জন্য কার্সারকে একটি কলামকে বাম দিকে সরিয়ে নিতে বলে।

#!/usr/bin/env bash

spinner() {
    local i sp n
    sp='/-\|'
    n=${#sp}
    printf ' '
    while sleep 0.1; do
        printf "%s\b" "${sp:i++%n:1}"
    done
}

printf 'Doing important work '
spinner &

sleep 10  # sleeping for 10 seconds is important work

kill "$!" # kill the spinner
printf '\n'

আরও জানতে বাশফাক्यू 34 দেখুন।


7
দুর্দান্ত কোড যদিও আমি একটি ছোট পরিবর্তন করব। দৌড়ানোর পরে spinner &, আমি spinner_pid=$!kill $spinner_pid &>/dev/null
পিড

আমি যুক্ত করতে চাই tput civis #hide cursorএবংtput cnorm #show cursor
ইশতিয়াক হুসেন

1

যেহেতু আপনি স্পষ্টভাবে ব্যাশ চাইছেন না, মাছের শেলের জন্য একটি ছোট প্লাগ , যেখানে এটি সুন্দরভাবে সমাধান করা যেতে পারে আইএমও:

set -l symbols    
while sleep 0.5
    echo -e -n "\b$symbols[1]"
    set -l symbols $symbols[2..-1] $symbols[1]
end

এই ক্ষেত্রে, symbolsএকটি অ্যারে ভেরিয়েবল, এবং বিষয়বস্তু যদি এটি ঘোরানো / স্থানান্তরিত $symbols[2..-1]হয় তবে সমস্ত প্রবেশিকা কিন্তু প্রথম first

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