বাশে, আমি কীভাবে পরীক্ষা করতে পারি যে কোনও স্ট্রিং কিছু মান দিয়ে শুরু হয় কিনা?


744

আমি পরীক্ষা করতে চাই যে "নোড" উদাহরণস্বরূপ "নোড 1001" দিয়ে কোনও স্ট্রিং শুরু হয় কিনা। কিছুটা এইরকম

if [ $HOST == user* ]
  then
  echo yes
fi

আমি কীভাবে এটি সঠিকভাবে করতে পারি?


HOST হয় "ইউজার 1" হয় কিনা "নোড" দিয়ে শুরু হয় কিনা তা পরীক্ষা করার জন্য আমার আরও এক্সপ্রেশনগুলি একত্রিত করতে হবে

if [ [[ $HOST == user1 ]] -o [[ $HOST == node* ]] ];
then
echo yes
fi

> > > -bash: [: too many arguments

আমি কীভাবে এটি সঠিকভাবে করতে পারি?


7
এক্সপ্রেশন একত্রিত করতে খুব প্রলোভন করবেন না। এটি দুটি পৃথক শর্তসাপেক্ষে দেখতে কুরুচিপূর্ণ মনে হতে পারে, যদিও আপনি আরও ভাল ত্রুটি বার্তা দিতে পারেন এবং আপনার স্ক্রিপ্টটি ডিবাগ করা সহজ করে তুলতে পারেন। এছাড়াও আমি ব্যাশ বৈশিষ্ট্যগুলি এড়াতে চাই। স্যুইচটি যাওয়ার উপায়।
হেন্ড্রি

উত্তর:


1072

অ্যাডভান্সড ব্যাশ স্ক্রিপ্টিং গাইডের এই স্নিপেটটি বলেছেন:

# The == comparison operator behaves differently within a double-brackets
# test than within single brackets.

[[ $a == z* ]]   # True if $a starts with a "z" (wildcard matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).

সুতরাং আপনি এটি প্রায় সঠিক ছিল; আপনার ডাবল বন্ধনী প্রয়োজন , একক বন্ধনী নয়।


আপনার দ্বিতীয় প্রশ্নের সাথে আপনি এইভাবে লিখতে পারেন:

HOST=user1
if  [[ $HOST == user1 ]] || [[ $HOST == node* ]] ;
then
    echo yes1
fi

HOST=node001
if [[ $HOST == user1 ]] || [[ $HOST == node* ]] ;
then
    echo yes2
fi

যা প্রতিধ্বনিত হবে

yes1
yes2

বাশের ifসিনট্যাক্স (আইএমও) অভ্যস্ত হওয়া শক্ত।


12
রেজেক্সের জন্য আপনার অর্থ কি [[$ a = ~ ^ z। *]]?
JStrahl

3
সুতরাং [[ $a == z* ]]এবং এর মধ্যে একটি কার্যকরী পার্থক্য আছে [[ $a == "z*" ]]? অন্য কথায়: তারা কি আলাদাভাবে কাজ করে? এবং আপনি "$ a সমান জেড * এর সমান" বললে আপনার বিশেষত অর্থ কী?
নীলস বম

5
আপনার বিবৃতি বিভাজক প্রয়োজন নেই ";" আপনি যদি তার নিজস্ব লাইনে "তারপর" রাখেন
ইয়াজা

6
শুধু সম্পূর্ণতার জন্য: চেক করতে যদি সঙ্গে ... একটি স্ট্রিং শেষ হয়:[[ $a == *com ]]
Lepe

4
এবিএস হ'ল রেফারেন্সগুলির দুর্ভাগ্যজনক পছন্দ it's এটি ডাব্লু 3 স্কুল অফ বাশ, পুরানো কন্টেন্ট এবং খারাপ-অনুশীলনের উদাহরণগুলিতে পূর্ণ; ফ্রেইনোড # ব্যাশ চ্যানেল কমপক্ষে ২০০৮ সাল থেকে এর ব্যবহারকে নিরুৎসাহিত করার চেষ্টা করছে । # 31 বাশএফএকিউতে পুনঃনির্ধারণের কোনও সুযোগ ? (আমি বাশ-হ্যাকারদের উইকির পরামর্শও দিয়েছিলাম তবে এখন এটি কিছুটা কম হয়েছে)।
চার্লস ডাফি

207

যদি আপনি বাশ (v3 +) এর সাম্প্রতিক সংস্করণটি ব্যবহার করেন তবে আমি বাশ রেজেক্স তুলনা অপারেটরের পরামর্শ দিচ্ছি =~, উদাহরণস্বরূপ,

if [[ "$HOST" =~ ^user.* ]]; then
    echo "yes"
fi

this or thatএকটি রেজেক্সে ম্যাচ করার |জন্য, উদাহরণস্বরূপ, ব্যবহার করুন

if [[ "$HOST" =~ ^user.*|^host1 ]]; then
    echo "yes"
fi

দ্রষ্টব্য - এটি 'যথাযথ' নিয়মিত প্রকাশের বাক্য গঠন।

  • user*এর অর্থ useএবং শূন্য বা আরও বেশি ঘটনা r, তাই useএবং userrrrমিলবে match
  • user.*মানে userএবং শূন্য-অর-আরো কোন চরিত্রের ঘটনার, তাই user1, userXম্যাচ হবে।
  • ^user.*মানে user.*O HOST এর শুরুতে প্যাটার্নটি মেলে ।

আপনি যদি নিয়মিত এক্সপ্রেশন সিনট্যাক্সের সাথে পরিচিত না হন তবে এই সংস্থানটি উল্লেখ করার চেষ্টা করুন ।


ধন্যবাদ, ব্র্যাবস্টার! আমি ক্লুজে থাকলে কীভাবে এক্সপ্রেশনগুলি একত্রিত করতে হবে সে সম্পর্কে একটি নতুন প্রশ্ন মূল পোস্টে যুক্ত করেছি।
টিম

2
এটি অত্যন্ত দুঃখের বিষয় যে গৃহীত উত্তরগুলি নিয়মিত প্রকাশের বাক্য গঠন সম্পর্কে কিছু বলেনি।
কার্লোস রোস

20
এফওয়াইআই বাশ =~অপারেটর কেবল নিয়মিত এক্সপ্রেশন মেলে যখন ডান হাতের অংশটি অনাবৃত থাকে। আপনি যদি ডান হাতের উক্তিটি করেন তবে "প্যাটার্নের কোনও অংশই স্ট্রিং হিসাবে মিলতে বাধ্য করার জন্য উদ্ধৃতি দেওয়া যেতে পারে।" (১) সর্বদা নিয়মিত অভিব্যক্তিটি ডান আন-কোটডে সর্বদা রাখার বিষয়টি নিশ্চিত করুন এবং (২) আপনি যদি নিয়মিত প্রকাশটি কোনও ভেরিয়েবলের মধ্যে সঞ্চয় করেন তবে প্যারামিটারের প্রসারণ করার সময় ডান হাতের উক্তিটি নিশ্চিত না করে নিশ্চিত করুন।
ট্রেভর বয়েড স্মিথ

145

আমি সবসময় shব্যাশ এক্সটেনশানগুলি ব্যবহার না করে পসিক্সের সাথে লেগে থাকার চেষ্টা করি , কারণ স্ক্রিপ্টিংয়ের অন্যতম প্রধান বিষয় হ'ল বহনযোগ্যতা ( প্রোগ্রাম সংযোগের পাশাপাশি , তাদের প্রতিস্থাপন না করে)।

ইন sh, "is-উপসর্গ" শর্তটি পরীক্ষা করার জন্য একটি সহজ উপায় রয়েছে।

case $HOST in node*)
    # Your code here
esac

কত পুরানো, আরকেন এবং ক্রুফটি শ এর (এবং বাশ নিরাময়ের নয়: এটি আরও জটিল, কম সামঞ্জস্যপূর্ণ এবং কম পোর্টেবল), আমি একটি খুব সুন্দর কার্যকরী দিকটি উল্লেখ করতে চাই: যদিও কিছু বাক্য গঠন যেমন caseবিল্ট-ইন রয়েছে , ফলাফলের নির্মাণগুলি অন্য কোনও কাজের চেয়ে আলাদা নয়। সেগুলি একইভাবে রচনা করা যেতে পারে:

if case $HOST in node*) true;; *) false;; esac; then
    # Your code here
fi

বা আরও খাটো

if case $HOST in node*) ;; *) false;; esac; then
    # Your code here
fi

বা এমনকি আরও ছোট (কেবলমাত্র !একটি ভাষা উপাদান হিসাবে উপস্থাপন করতে - তবে এটি এখন খারাপ শৈলী)

if ! case $HOST in node*) false;; esac; then
    # Your code here
fi

আপনি যদি সুস্পষ্ট হওয়া পছন্দ করেন তবে নিজের ভাষার উপাদানটি তৈরি করুন:

beginswith() { case $2 in "$1"*) true;; *) false;; esac; }

এটি আসলে বেশ সুন্দর না?

if beginswith node "$HOST"; then
    # Your code here
fi

এবং যেহেতু shমূলত কেবলমাত্র চাকরি এবং স্ট্রিং-তালিকা (এবং অভ্যন্তরীণ প্রক্রিয়াগুলি, যার মধ্যে কাজগুলি রচিত হয়), আমরা এখন কিছু হালকা ফাংশনাল প্রোগ্রামিংও করতে পারি:

beginswith() { case $2 in "$1"*) true;; *) false;; esac; }
checkresult() { if [ $? = 0 ]; then echo TRUE; else echo FALSE; fi; }

all() {
    test=$1; shift
    for i in "$@"; do
        $test "$i" || return
    done
}

all "beginswith x" x xy xyz ; checkresult  # Prints TRUE
all "beginswith x" x xy abc ; checkresult  # Prints FALSE

এটি মার্জিত। এমন নয় যে আমি shগুরুতর যে কোনও কিছুর জন্য ব্যবহার করার পক্ষে পরামর্শ নিই - এটি বাস্তব বিশ্বের প্রয়োজনীয়তার জন্য খুব দ্রুত ব্রেক হয়ে যায় (ল্যাম্বডাস নয়, তাই আমাদের অবশ্যই স্ট্রিং ব্যবহার করতে হবে But তবে স্ট্রিংগুলির সাহায্যে বাসা বাঁধার ফাংশন কল সম্ভব নয়, পাইপগুলি সম্ভব নয় ইত্যাদি))


12
+1 কেবল এই পোর্টেবলই নয়, এটি পঠনযোগ্য, অভিব্যক্তিপূর্ণ এবং মার্জিত (শেল স্ক্রিপ্টের জন্য)। এটি একাধিক নিদর্শন পর্যন্ত প্রাকৃতিকভাবে প্রসারিত; case $HOST in user01 | node* ) ...
ট্রিপলি

এই জাতীয় কোড বিন্যাসকরণের জন্য কি কোনও নাম আছে? if case $HOST in node*) true;; *) false;; esac; then আমি এটি এখানে এবং সেখানে দেখেছি, আমার চোখে দেখে মনে হচ্ছে এটি খুব সুন্দরভাবে ছড়িয়ে পড়েছে।
নীলস বম

@ নীলস বম ফর্ম্যাট করে আপনি ঠিক কী বোঝেন তা আমি জানি না তবে আমার বক্তব্যটি হ'ল শেল কোডটি খুব বেশি কম্পোজেবল । Becaues caseকমান্ড হ'ল কমান্ড, তারা ভিতরে যেতে পারে if ... then
জো সো

এটি কেন কমপোজযোগ্য তা আমিও দেখতে পাচ্ছি না, আমি এর জন্য পর্যাপ্ত শেল স্ক্রিপ্ট বুঝতে পারি না :-) আমার প্রশ্নটি এই কোডটি কী কী ম্যাচবিহীন বন্ধনী এবং ডাবল সেমিকোলন ব্যবহার করে about এটি শেল স্ক্রিপ্টের মতো আমি আগে দেখেছি বলে কিছু দেখায় না তবে শ স্ক্রিপ্টের চেয়ে বাশ স্ক্রিপ্ট দেখতে আমার অভ্যস্ত হতে পারে যাতে এটি হতে পারে।
নীলস বম

নোট: এটি beginswith() { case "$2" in "$1"*) true;; *) false;; esac; }অন্যথায় হওয়া উচিত যদি $1আক্ষরিক থাকে *বা ?এটি ভুল উত্তর দিতে পারে।
এলএলফর্ন

80

আপনি যে স্ট্রিংটি পরীক্ষা করতে চান তার কেবলমাত্র অংশটি নির্বাচন করতে পারেন:

if [ "${HOST:0:4}" = user ]

আপনার ফলোআপ প্রশ্নের জন্য, আপনি একটি OR ব্যবহার করতে পারেন :

if [[ "$HOST" == user1 || "$HOST" == node* ]]

8
আপনার দ্বিগুণ হওয়া উচিত${HOST:0:4}
জো So

@ জো সো: কারণ কী?
পিটার মর্টেনসেন

@ পিটারমোরটেনসেন, চেষ্টা করুনHOST='a b'; if [ ${HOST:0:4} = user ] ; then echo YES ; fi
জো সো

60

আমি ইতিমধ্যে পোস্ট করা অন্যান্য পদ্ধতিগুলি পছন্দ করি তবে কিছু লোক ব্যবহার করতে পছন্দ করে:

case "$HOST" in 
    user1|node*) 
            echo "yes";;
        *)
            echo "no";;
esac

সম্পাদনা:

আমি উপরের কেস স্টেটমেন্টে আপনার বিকল্প যুক্ত করেছি

আপনার সম্পাদিত সংস্করণে আপনার অনেকগুলি বন্ধনী রয়েছে। এটিকে ঐটির মত দেখতে হবে:

if [[ $HOST == user1 || $HOST == node* ]];

ধন্যবাদ, ডেনিস! আমি ক্লুজে থাকলে কীভাবে এক্সপ্রেশনগুলি একত্রিত করতে হবে সে সম্পর্কে একটি নতুন প্রশ্ন মূল পোস্টে যুক্ত করেছি।
টিম

11
"কিছু লোক পছন্দ করে ...": এটি সংস্করণ এবং শেলগুলি জুড়ে আরও বহনযোগ্য।
কার্লোসায়াম

কেস স্টেটমেন্টের সাহায্যে আপনি ভেরিয়েবলের চারপাশে উদ্ধৃতিগুলি ছেড়ে দিতে পারেন যেহেতু কোনও শব্দ বিভাজন ঘটে না। আমি জানি এটি অর্থহীন এবং বেমানান তবে এটিকে স্থানীয়ভাবে আরও দৃষ্টি আকর্ষণীয় করে তুলতে আমি এখানে উদ্ধৃতিগুলি রেখে দিতে চাই।
জো সো

এবং আমার ক্ষেত্রে, আমাকে আগে উক্তিগুলি ছেড়ে দিতে হবে): "/ *") কাজ করে না, / *) করেনি। (আমি /, অর্থাৎ নিখুঁত পাথগুলি দিয়ে শুরু করে স্ট্রিংগুলি খুঁজছি)
জোসিয়াহা ইয়োডার-ডিএ্যাকটিভ বাদে ..

36

যদিও আমি এখানে বেশিরভাগ উত্তরগুলি বেশ সঠিকভাবে খুঁজে পাই, তাদের মধ্যে অনেকগুলিতে অপ্রয়োজনীয় বাশিজম রয়েছে। পসিক্স প্যারামিটার বিস্তৃতি আপনাকে যা যা প্রয়োজন তা দেয়:

[ "${host#user}" != "${host}" ]

এবং

[ "${host#node}" != "${host}" ]

${var#expr}সবচেয়ে ছোট উপসর্গটি মিলে exprযায় ${var}এবং এটি ফেরত দেয়। অত: পর যদি ${host}না না দিয়ে শুরু user( node), ${host#user}( ${host#node}) হিসাবে একই ${host}

exprfnmatch()ওয়াইল্ডকার্ডগুলিকে মঞ্জুরি দেয় , এভাবে ${host#node??}এবং বন্ধুরাও কাজ করে।


2
আমি যুক্তি দেব যে বাশিজম [[ $host == user* ]]প্রয়োজনীয় হতে পারে, যেহেতু এটি তার চেয়ে অনেক বেশি পাঠযোগ্য [ "${host#user}" != "${host}" ]। যেমন আপনি পরিবেশটি নিয়ন্ত্রণ করতে পারেন যেখানে স্ক্রিপ্টটি কার্যকর করা হয় (এর সর্বশেষতম সংস্করণগুলিকে লক্ষ্য করুন bash), পূর্ববর্তীটি পছন্দনীয়।
এক্স-ইউরি 21

2
@ এক্স-ইউরি স্পষ্টতই, আমি এটিকে কেবল কোনও has_prefix()ফাংশনে প্যাক করব এবং এটি আর কখনও দেখব না।
dhke

30

যেহেতু #বাশের একটি অর্থ রয়েছে, তাই আমি নিম্নলিখিত সমাধানে পৌঁছেছি।

এ ছাড়া স্পেস ইত্যাদি কাটিয়ে ওঠার জন্য স্ট্রিং প্যাক করা ভাল like

A="#sdfs"
if [[ "$A" == "#"* ]];then
    echo "Skip comment line"
fi

এটি আমার প্রয়োজন ঠিক ছিল। ধন্যবাদ!
আয়নিক বিজাউ

ধন্যবাদ, আমিও ভাবছিলাম যে কীভাবে শুরু হয়ে একটি স্ট্রিং মেলাতে হবে blah:, দেখে মনে হচ্ছে এটিই উত্তর!
এ্যানেন্ট্রপিক

12

মার্ক রুশাকফের সর্বোচ্চ র‌্যাঙ্কের উত্তরে একটি সামান্য বিট আরও সিনট্যাক্স বিশদ যুক্ত করা।

এখনও বিক্রয়ের জন্য

$HOST == node*

হিসাবে লেখা যেতে পারে

$HOST == "node"*

প্রভাব একই। কেবল নিশ্চিত করুন যে ওয়াইল্ডকার্ড উদ্ধৃত পাঠ্যের বাইরে রয়েছে। যদি ওয়াইল্ডকার্ডের উদ্ধৃতিগুলির ভিতরে থাকে তবে এটি অক্ষরে অক্ষরে ব্যাখ্যা করা হবে (অর্থাত্ ওয়াইল্ডকার্ড হিসাবে নয়)।


8

@ ওপ, আপনার উভয় প্রশ্নের জন্য আপনি কেস / এস্যাক ব্যবহার করতে পারেন:

string="node001"
case "$string" in
  node*) echo "found";;
  * ) echo "no node";;
esac

দ্বিতীয় প্রশ্ন

case "$HOST" in
 node*) echo "ok";;
 user) echo "ok";;
esac

case "$HOST" in
 node*|user) echo "ok";;
esac

বা বাশ 4.0

case "$HOST" in
 user) ;&
 node*) echo "ok";;
esac


6
if [ [[ $HOST == user1 ]] -o [[ $HOST == node* ]] ];
then
echo yes
fi

কারণ সব কাজ করে না [, [[এবং testএকই nonrecursive ব্যাকরণ স্বীকার করে। বিভাগটি দেখুন কন্ডিশনাল এক্সপ্রেশনের আপনার ব্যাশ মানুষ পৃষ্ঠাতে।

একদিকে যেমন, এসইউএসভি 3 বলে

কর্নশেল থেকে প্রাপ্ত শর্তসাপেক্ষ কমান্ড (ডাবল ব্র্যাকেট [[]] ) প্রারম্ভিক প্রস্তাবে শেল কমান্ড ভাষার বিবরণ থেকে সরানো হয়েছিল। আপত্তি উত্থাপিত হয়েছিল যে আসল সমস্যাটি পরীক্ষা আদেশ ( [ )) এর অপব্যবহার এবং এটিকে শেলের মধ্যে রাখা সমস্যা সমাধানের ভুল উপায়। পরিবর্তে, সঠিক ডকুমেন্টেশন এবং একটি নতুন শেল সংরক্ষিত শব্দ ( ! ) যথেষ্ট

টেস্ট একাধিক প্রয়োজন পরীক্ষা অপারেশনের পৃথক আমন্ত্রণ ব্যবহার শেল পর্যায়ে কাজ করা যেতে পারে পরীক্ষা কমান্ড শেল logicals বদলে ত্রুটি-প্রবণ ব্যবহার -o পতাকা পরীক্ষা

আপনার এটি লিখতে হবে, কিন্তু পরীক্ষা এটি সমর্থন করে না:

if [ $HOST == user1 -o $HOST == node* ];
then
echo yes
fi

পরীক্ষা ব্যবহারসমূহ = স্ট্রিং সমতার জন্য, এবং আরো গুরুত্বপূর্ণ এটা প্যাটার্ন ম্যাচিং সমর্থন করে না।

case/ esacপ্যাটার্ন মেলানোর জন্য ভাল সমর্থন আছে:

case $HOST in
user1|node*) echo yes ;;
esac

এটির অতিরিক্ত সুবিধা রয়েছে যা এটি বাশের উপর নির্ভর করে না এবং সিনট্যাক্সটি বহনযোগ্য। থেকে একক ইউনিক্স স্পেসিফিকেশন , শেল কমান্ড ভাষা :

case word in
    [(]pattern1) compound-list;;
    [[(]pattern[ | pattern] ... ) compound-list;;] ...
    [[(]pattern[ | pattern] ... ) compound-list]
esac

1
[এবং testবাইশ বিল্টিনগুলির পাশাপাশি বাহ্যিক প্রোগ্রামগুলিও। ব্যবহার করে দেখুন type -a [
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

"যৌগিক" বা "কারও সাথে সামঞ্জস্য করুন" - এর সমস্যাগুলি ব্যাখ্যা করার জন্য অনেক ধন্যবাদ ঠিক এরকম কিছু খুঁজছিলেন! চিয়ার্স! দ্রষ্টব্য নোট (ওপি অসম্পর্কিত): if [ -z $aa -or -z $bb ]; ... দেয় " বাশ: [: -অর: বাইনারি অপারেটর প্রত্যাশিত "; তবে if [ -z "$aa" -o -z "$bb" ] ; ...পাস।
sdaau

2

grep

পারফরম্যান্স ভুলে যাওয়া, এটি পসিক্স এবং caseসমাধানগুলির চেয়ে সুন্দর দেখায় :

mystr="abcd"
if printf '%s' "$mystr" | grep -Eq '^ab'; then
  echo matches
fi

ব্যাখ্যা:


2

এটিকে একটি কলযোগ্য ফাংশন হিসাবে তৈরি করার জন্য আমি @ চিহ্নরশাকফের উত্তরটি টুইট করেছি:

function yesNo {
  # Prompts user with $1, returns true if response starts with y or Y or is empty string
  read -e -p "
$1 [Y/n] " YN

  [[ "$YN" == y* || "$YN" == Y* || "$YN" == "" ]]
}

এটি এর মতো ব্যবহার করুন:

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] y
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] Y
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] yes
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n]
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] n
false

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] ddddd
false

এখানে একটি আরও জটিল সংস্করণ যা একটি নির্দিষ্ট ডিফল্ট মান সরবরাহ করে:

function toLowerCase {
  echo "$1" | tr '[:upper:]' '[:lower:]'
}

function yesNo {
  # $1: user prompt
  # $2: default value (assumed to be Y if not specified)
  # Prompts user with $1, using default value of $2, returns true if response starts with y or Y or is empty string

  local DEFAULT=yes
  if [ "$2" ]; then local DEFAULT="$( toLowerCase "$2" )"; fi
  if [[ "$DEFAULT" == y* ]]; then
    local PROMPT="[Y/n]"
  else
    local PROMPT="[y/N]"
  fi
  read -e -p "
$1 $PROMPT " YN

  YN="$( toLowerCase "$YN" )"
  { [ "$YN" == "" ] && [[ "$PROMPT" = *Y* ]]; } || [[ "$YN" = y* ]]
}

এটি এর মতো ব্যবহার করুন:

$ if yesNo "asfd" n; then echo "true"; else echo "false"; fi

asfd [y/N]
false

$ if yesNo "asfd" n; then echo "true"; else echo "false"; fi

asfd [y/N] y
true

$ if yesNo "asfd" y; then echo "true"; else echo "false"; fi

asfd [Y/n] n
false

-5

catআপনি যেটি প্রতিধ্বনিত করছেন এবং এর সাথে পাইপটি বের করতে পারেন তা অন্য কোনও জিনিস আপনি করতে পারেনinline cut -c 1-1

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