আমি আর্টুরোর সমাধানের নিম্নলিখিত পরিবর্তনগুলি ব্যবহার করি:
psql -lqt | cut -d \| -f 1 | grep -qw <db_name>
এর মানে কি
psql -l
নিম্নলিখিত মত কিছু আউটপুট:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-----------+----------+------------+------------+-----------------------
my_db | my_user | UTF8 | en_US.UTF8 | en_US.UTF8 |
postgres | postgres | LATIN1 | en_US | en_US |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
নিষ্পাপ পদ্ধতির ব্যবহারের অর্থ হ'ল "তালিকা," অ্যাক্সেস "বা" সারি "নামক একটি ডাটাবেস অনুসন্ধান করা সফল হবে So সুতরাং আমরা কেবল প্রথম কলামে অনুসন্ধান করার জন্য অন্তর্নির্মিত কমান্ড লাইন সরঞ্জামগুলির একগুচ্ছ মাধ্যমে এই আউটপুটটি পাইপ করি।
-t
পতাকা শিরোলেখ এবং পাদলেখ সরিয়ে ফেলা হবে:
my_db | my_user | UTF8 | en_US.UTF8 | en_US.UTF8 |
postgres | postgres | LATIN1 | en_US | en_US |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
পরবর্তী বিট, cut -d \| -f 1
উল্লম্ব পাইপ |
অক্ষর দ্বারা আউটপুট বিভক্ত (একটি ব্যাকস্ল্যাশ সঙ্গে শেল থেকে পালানো), এবং ক্ষেত্র 1 নির্বাচন করে। এই পাতা:
my_db
postgres
template0
template1
grep -w
পুরো শব্দের সাথে মেলে, এবং তাই আপনি যদি temp
এই দৃশ্যে সন্ধান করছেন তবে মিলবে না । -q
বিকল্প, কোন আউটপুট পর্দায় লেখা অপ্রকাশিত তাই যদি আপনি একটি কমান্ড প্রম্পট আপনি বাদ দেওয়ার সঙ্গে পারে এ ইন্টারেক্টিভ এই চালাতে চান -q
অবিলম্বে তাই কিছু প্রদর্শিত হয়।
নোট করুন যে grep -w
বর্ণানুক্রমিক, অঙ্কগুলি এবং আন্ডারস্কোরের সাথে মেলে যা হুবহু পোস্টগ্রেস্কল-এ অনাবৃত ডাটাবেসের নামগুলিতে অনুমোদিত অক্ষরের সেট (হাইফেনগুলি অব্যক্ত শনাক্তকারীগুলিতে আইনী নয়)। আপনি যদি অন্য চরিত্রগুলি ব্যবহার করেন তবে আপনার পক্ষে grep -w
কাজ করবে না।
এই পুরো পাইপলাইনের প্রস্থান স্থিতিটি 0
(সাফল্য) হবে ডাটাবেস উপস্থিত থাকলে বা 1
(ব্যর্থতা) যদি তা না থাকে। আপনার শেলটি $?
শেষ কমান্ডের প্রস্থান স্থিতিতে বিশেষ পরিবর্তনশীল সেট করবে । আপনি সরাসরি শর্তসাপেক্ষে স্থিতিটিও পরীক্ষা করতে পারেন:
if psql -lqt | cut -d \| -f 1 | grep -qw <db_name>; then
# database exists
# $? is 0
else
# ruh-roh
# $? is 1
fi
... | grep 0
যদি ডিবি 1 অস্তিত্ব নেই এবং যদি এটা আছে শেল ফেরত মান 0 হতে প্রণয়ন; বা... | grep 1
বিপরীত আচরণের জন্য