প্রথমত, আমি ভয় করি যে http://explainshell.com-o
দ্বারা পরিবেশন করা বিকল্পটির ব্যাখ্যা সম্পূর্ণ সঠিক নয়।
প্রদত্ত যে set
একটি Bulit-ইন কমান্ড আমরা তার ডকুমেন্টেশন সঙ্গে দেখতে পারেন help
নির্বাহ দ্বারা help set
:
-o option-name
Set the variable corresponding to option-name:
allexport same as -a
braceexpand same as -B
emacs use an emacs-style line editing interface
errexit same as -e
errtrace same as -E
functrace same as -T
hashall same as -h
histexpand same as -H
history enable command history
ignoreeof the shell will not exit upon reading EOF
interactive-comments
allow comments to appear in interactive commands
keyword same as -k
monitor same as -m
noclobber same as -C
noexec same as -n
noglob same as -f
nolog currently accepted but ignored
notify same as -b
nounset same as -u
onecmd same as -t
physical same as -P
pipefail the return value of a pipeline is the status of
the last command to exit with a non-zero status,
or zero if no command exited with a non-zero status
posix change the behavior of bash where the default
operation differs from the Posix standard to
match the standard
privileged same as -p
verbose same as -v
vi use a vi-style line editing interface
xtrace same as -x
আপনি দেখতে পাচ্ছেন এর -o pipefail
অর্থ:
পাইপলাইনের রিটার্ন মান হ'ল শূন্যহীন স্থিতি সহ প্রস্থান করার জন্য শেষ কমান্ডের স্থিতি, বা শূন্য-বিহীন স্থিতি সহ কোনও কমান্ড উপস্থিত না হলে শূন্য হয় zero
তবে এটি বলে না: Write the current settings of the options to standard output in an unspecified format.
এখনই, -x
এটি ডিবাগিংয়ের জন্য ব্যবহৃত হয়েছে কারণ আপনি এটি ইতিমধ্যে জানেন এবং -e
স্ক্রিপ্টে প্রথম ত্রুটির পরে কার্যকর করা বন্ধ হবে। এর মতো স্ক্রিপ্ট বিবেচনা করুন:
#!/usr/bin/env bash
set -euxo pipefail
echo hi
non-existent-command
echo bye
echo bye
লাইন যখন মৃত্যুদন্ড কার্যকর করা হবে না -e
কারণ ব্যবহার করা হয়
non-existent-command
ফেরত দেয় না 0:
+ echo hi
hi
+ non-existent-command
./setx.sh: line 5: non-existent-command: command not found
-e
শেষ লাইনটি ছাড়া মুদ্রণ করা হবে কারণ ত্রুটি ঘটলেও আমরা Bash
স্বয়ংক্রিয়ভাবে প্রস্থান করতে বলিনি :
+ echo hi
hi
+ non-existent-command
./setx.sh: line 5: non-existent-command: command not found
+ echo bye
bye
set -e
প্রথম ত্রুটি দেখা দিলে স্ক্রিপ্টটি থামানো হবে কিনা তা নিশ্চিত করার জন্য প্রায়শই স্ক্রিপ্টের শীর্ষে স্থাপন করা হয় - উদাহরণস্বরূপ, যদি কোনও ফাইল ডাউনলোড করা ব্যর্থ হয় তবে এটি নিষ্কাশন করার কোনও মানে হয় না।
set -uxo pipefail
) different