বাশে স্থানীয় পরিবর্তনশীল কীভাবে বাড়ানো যায়?


13

উপাত্ত

1
\begin{document}
3

কোড

#!/bin/bash

function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
        echo $START
}

START2=$(getStart)
echo $START2

যা আয় 2কিন্তু আমি চাই 3। আমি কীভাবে বাশ স্ক্রিপ্টে নম্বর যুক্ত করতে পারি সে সম্পর্কে এই উত্তরটি দিয়ে অসফলভাবে পরিবর্তন করেছি :

START2=$((getStart+1))

বাশ স্ক্রিপ্টে আপনি কীভাবে স্থানীয় পরিবর্তনশীল বর্ধন করতে পারেন?


আমি কোড থেকে 2 পাচ্ছি, 1 নয়।
চোরোবা

দুঃখিত আমার ভুল!
লিও লোপোল্ড হার্টজ 준영

1
বন্ধ: কেন awk? sed -n '/begin{document}/{=;q}' data.textঅনেক খাটো…
কস্টাস

@ কাস্টাস হ্যাঁ, আপনি ঠিক বলেছেন! খুব জটিল ভাবতে আমার আজকের দিনটি খুব খারাপ হয়েছে। উন্মুক্ত বিরতিগুলির জন্য এখানে জিনিসটি এখন ভাবছেন: unix.stackexchange.com/q/229060/16920 আপনি কি }/{=;q}উত্তর / মন্তব্যে এটি ব্যাখ্যা করতে পারেন , দয়া করে?
লিও লোপোল্ড হার্টজ 준영

উত্তর:


36

আমি 2আপনার কোড থেকে পেয়েছি তবুও, আপনি যে কোনও পরিবর্তনশীল বা সংখ্যার জন্য একই কৌশলটি ব্যবহার করতে পারেন:

local start=1
(( start++ ))

অথবা

(( ++start ))

অথবা

(( start += 1 ))

অথবা

(( start = start + 1 ))

বা শুধু

local start=1
echo $(( start + 1 ))

প্রভৃতি


এটিও সহায়তা করতে পারে: Askubuntu.com/Quetions/385528/…
ব্রুনো

3

চেষ্টা করুন:

START2=$(( `getStart` + 1 ));

$(( ))ব্যাশ বলে এটি একটি গাণিতিক অপারেশন সম্পাদন করতে, যখন ব্যাকটিক ব্যাশ বলে, ধারণকারী অভিব্যক্তি নির্ণয় এটি একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন বা একটি বহিস্থিত প্রোগ্রাম একটি কল কর এবং stdout- এ বিষয়বস্তু ফিরতে হয়।

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