সমান "ইকো অন" লিনাক্সের জন্য?


27

ব্যাশ স্ক্রিপ্টে চলমান সমস্ত কমান্ড কীভাবে আমি অবিচ্ছিন্ন করতে পারি?

এটি হ'ল আউটপুটে অবশ্যই কমান্ড আউটপুট এবং কমান্ডগুলি নিজেরাই থাকতে হবে।

আমি পেয়েছি

#!/bin/bash -x

তবে এটি ঠিক একই কারণে নয় পরিবর্তে

 mysql -v dbname < dump.sql | grep "CREATE TABLE"

এটা দেখায়

+ mysql -v dbname
+ grep 'CREATE TABLE'

উত্তর:


29

ব্যবহার bash -v

এটি লিপি:

#!/bin/bash -v

echo "Hello, World" | sed 's|Hello|Goodbye|'

echo "Done."

এটি আউটপুট:

#!/bin/bash -v

echo "Hello, World" | sed 's|Hello|Goodbye|'
Goodbye, World

echo "Done."
Done.

দুর্ভাগ্যক্রমে, PS4প্রসারিত কমান্ডগুলি মুদ্রণের জন্য বিশেষ কোনও চিহ্নিতকারী নেই । কমান্ডগুলি দ্রুত সনাক্ত করার জন্য আপনি উভয়কে একত্রিত করতে পারেন:

#!/bin/bash -vx

echo "Hello, World" | sed 's|Hello|Goodbye|'
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World

echo "Done."
+ echo Done.
Done.

12

সেট-এক্স এটি করার অন্যান্য উপায়।

$ cat a.sh
#!/bin/bash

set -x
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."

আউটপুট হবে:

sh a.sh
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
+ echo Done.
Done.

1
ওপি তার প্রশ্নে অকেজো অধিকার হিসাবে বরখাস্ত হবার এক প্রকারের ...
ড্যানিয়েল বেক

@ আশোক আপনি দয়া করে ব্যাখ্যা করতে পারেন? আমি পার্থক্যটি দেখতে পাচ্ছি না: এখানে পিএস: জিএনইউ বাশ, সংস্করণ 4.1.5 (1) -রেলিজ (আই 486-পিসি-লিনাক্স-গনু) উবুন্টু 10.04.3
পুত্নিক

1
@ পুটনিক এটি একই মূল জিনিস, তবে আপনি set -xস্ক্রিপ্টের যে কোনও জায়গায়, এমনকি এটিকে আবার নিষ্ক্রিয় করতে পারেন। সুতরাং আপনি যদি কেবল echo "Done"লাইনে এটি চান তবে set -xঠিক তার আগে রাখুন।
ড্যানিয়েল অঙ্গুলিনির্দেশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.