প্রশ্ন কিভাবে সঞ্চালন করার আগে bash স্ক্রিপ্ট প্রতিটি কমান্ড মুদ্রণ করতে?


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

#!/bin/bash
cd ~/hello
ls

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


74
2018-05-31 13:39


উত্স


যারা খুঁজছেন জন্য set অপশন, আপনি তাদের খুঁজে পেতে পারেন এই মানুষ পাতা। - mkobit
আপনি কেবল এই মত Shebang প্রসারিত করতে পারেন #!/bin/bash -x - sobi3ch


উত্তর:


bash -x script

অথবা

set -x

স্ক্রিপ্টে।

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


98
2018-05-31 13:44



আমি সবসময় মহান প্রভাব এই ব্যবহার করেছেন। আউটপুট আপনি আশা প্রথম চেয়ে একটু dirtier দেখায়। - Scott Pack
সেটিং দ্বারা PS4 আপনি প্রম্পট tweak করতে পারেন -x। উদাঃ .: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script (date যদিও এটি ধীর হবে, যদিও) - Walter Tross


এই কাজ করে:

set -v

অথবা

#!/bin/bash -v

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

এখানে -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 এর মধ্যে পার্থক্যগুলিতে জোর দেওয়ার জন্য "echo -n" অন্তর্ভুক্ত করেছি। এছাড়াও, -v "-o verbose" হিসাবে একই, কিন্তু দ্বিতীয়টি একটি Shebang অংশ হিসাবে কাজ করে না বলে মনে হয়।


22
2018-05-31 15:28



মহান ব্যাখ্যা! কোন গবেষণা না করে, এটা আমার কাছে দেখায় যেমন Verbose এবং এক্সপ্লিটিক সেই দুটি অক্ষরের জন্য দাঁড়িয়ে আছে। - Ape-inago
আমি মনে করি -X eXecute কাছাকাছি। - Steven Parkes


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

#!/bin/bash -x
cd ~/hello
ls

10
2018-05-31 14:18





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

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

5
2018-05-31 13:44





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

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


4
2018-06-10 12:45





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

#!/usr/bin/env bash -x

Shebang লাইন হিসাবে।

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

আমি সঠিকভাবে perl মনে রাখে এছাড়াও -x বিকল্প আছে।


3
2018-05-31 19:09





মত যায়

language -x script

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

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


2
2018-05-31 16:12



-x পাইথন প্রতিধ্বনি সঙ্গে কিছুই আছে - Eugene Pankov


#! /bin/bash -x আপনি কি চান।


0
2018-06-11 11:16