প্রতিটি কমান্ড কার্যকর হওয়ার আগে বাশ স্ক্রিপ্টগুলি কীভাবে মুদ্রণ করে?


88

উদাহরণস্বরূপ, আমার কাছে একটি সরল বাশ ফাইল রয়েছে

#!/bin/bash
cd ~/hello
ls

এটি কার্যকর করার আগে আমি কীভাবে এটি প্রতিটি আদেশ প্রদর্শন করতে পারি? উইন্ডোজ ব্যাচের স্ক্রিপ্টিংয়ের "@echo বন্ধ" এর বিপরীত প্রভাব।


1
setবিকল্পগুলি কী কী তা সন্ধান করছেন তাদের জন্য আপনি এই ম্যান পেজে খুঁজে পেতে পারেন ।
এমকোবিট

আপনি কেবল #!/bin/bash -x
শিবাং এর

উত্তর:


110
bash -x script

অথবা

set -x

স্ক্রিপ্টে।

আপনি আবার বিকল্পটি আনসেট করতে পারেন set +x। আপনি যদি কেবল কয়েকটি আদেশের জন্য এটি করতে চান তবে আপনি সাব-শেল ব্যবহার করতে পারেন:: (সেট -x; কমান্ড 1; কমান্ড; ...;)


আমি এটিকে সর্বদা দুর্দান্তভাবে ব্যবহার করেছি। আপনার প্রথম প্রত্যাশার চেয়ে আউটপুটটি খানিকটা ডার্টিয়ার দেখাচ্ছে
স্কট প্যাক

2
সেট করে PS4আপনি প্রম্পটটি টুইট করতে পারেন -xPS4='Line $LINENO @ $(date +%s.%N): ' bash -x scriptdate
উদা

23

এগুলিও কাজ করে:

set -v

অথবা

#!/bin/bash -v

তবে -v প্রতিটি স্ক্রিপ্ট লাইনের আগে পিএস 4 স্ট্রিংটি মুদ্রণ করে না এবং এটি পৃথকভাবে "ফর" বিবৃতি (উদাহরণস্বরূপ) এর পদক্ষেপগুলি সনাক্ত করে না। এটি ইকো মন্তব্য করে যখন -x না।

-V ব্যবহার করে আউটপুটটির উদাহরণ এখানে দেওয়া হয়েছে:

#!/bin/bash -v
# this is a comment
for i in {1..4}
do
    echo -n $i
done
1234echo

echo hello
hello

এখানে -x সহ একই স্ক্রিপ্টের ফলাফল:

+ for i in '{1..4}'
+ echo -n 1
1+ for i in '{1..4}'
+ echo -n 2
2+ for i in '{1..4}'
+ echo -n 3
3+ for i in '{1..4}'
+ echo -n 4
4+ echo

+ echo hello
hello

নোট করুন যে আমি -v এবং -x এর মধ্যে পার্থক্যগুলিকে জোর দেওয়ার জন্য "প্রতিধ্বনি-এন" অন্তর্ভুক্ত করেছি। এছাড়াও, -v "-o ভার্বোজ" এর সমান, তবে দ্বিতীয়টি কোনও শেবাংয়ের অংশ হিসাবে কাজ করবে না বলে মনে হয়।


দুর্দান্ত ব্যাখ্যা! কোনও গবেষণা না করে, আমার কাছে ভার্বোজের মতো এবং ইক্স্প্লিক্টের মতো দেখতে এই দুটি অক্ষরই দাঁড়িয়ে আছে।
এপি-ইনাগো

আমি মনে করি -x এক্সেক্সটের কাছাকাছি।
স্টিভেন পার্কস 25'12


6

এই কাজ করা উচিত:

set -o verbose #echo on
...
set +o verbose #echo off

4

set -o xtraceএবং set +o xtraceআপনার বন্ধু (এটি -o verboseভার্বোজের চেয়ে বেশি , এবং আউটপুটটি এসটিডিআরআরে চলে যায়, ভার্বোজের বিপরীতে, যা এসটিডিউটে লগ হয় বলে মনে হয়)।

আরও টিপস এখানে দেখুন


3

কয়েকটি উপায় আছে।

#!/usr/bin/env bash -x

শেবাং লাইন হিসাবে

সহ set -xস্ক্রিপ্ট নিজেই কার্যকারিতা যখন সক্ষম করবে set +xএটা নিষ্ক্রিয় করা হবে। এই দুটি পদ্ধতিই আরও পোর্টেবল শ শেলের সাথেও কাজ করবে।

যদি আমি মনে করি সঠিকভাবে পার্ল-এর বিকল্পও রয়েছে।


1

মত যায়

language -x script

ভাষা = অজগর, পার্ল, বাশ -x = অপারেটর স্ক্রিপ্ট = ফাইলের নাম

আশা করি এটা সাহায্য করবে.


3
-xপাইথনে প্রতিধ্বনির সাথে কিছুই নেই
ইউজিন পানকভ

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