আশা করি এটি নোট করা ঠিক আছে, এখন আমি এটির মুখোমুখি হয়েছি:
আমি ইতিমধ্যে সচেতন যে কেউ test
( [
) কমান্ডটি ব্যবহার করে ফাইল অস্তিত্বের জন্য পরীক্ষা করতে পারে :
$ touch exists.file
$ if [ -f exists.file ] ; then echo "yes" ; else echo "no" ; fi
yes
$ if [ -f noexists.file ] ; then echo "yes" ; else echo "no" ; fi
no
... তবে এটি সেখানে টাইপ করা কিছুটা :)
সুতরাং, আমি যদি সেখানে কোনও "ডিফল্ট" একক কমান্ড থাকি, তবে সেগুলি ফাইলের অস্তিত্বের ফলাফলটি ফিরিয়ে দেবে stdout
?
আমি test
প্রস্থান স্থিতি দিয়েও ব্যবহার করতে পারি $?
:
$ test -f exists.file ; echo $?
0
$ test -f noexists.file ; echo $?
1
... তবে এটি এখনও দুটি কমান্ড - এবং যুক্তিটিও "বিপরীত" (সাফল্যের জন্য 0, এবং ব্যর্থতার জন্য ননজারো)।
আমি জিজ্ঞাসার কারণটি হ'ল আমাকে ফাইল অস্তিত্বের জন্য পরীক্ষা করা দরকার gnuplot
, যার " system("command")
স্ট্রাউড থেকে ফলাফলের চরিত্রের প্রবাহটি স্ট্রিং হিসাবে ফিরিয়ে দেয় "; ইন gnuplot
আমি সরাসরি করতে পারি:
gnuplot> if (0) { print "yes" } else { print "no" }
no
gnuplot> if (1) { print "yes" } else { print "no" }
yes
সুতরাং আমি মূলত এর মতো কিছু লিখতে সক্ষম হতে চাই (ছদ্ম):
gnuplot> file_exists = system("check_file --stdout exists.file")
gnuplot> if (file_exists) { print "yes" } else { print "no" }
yes
... দুর্ভাগ্যক্রমে, আমি সরাসরি test
এবং এর মাধ্যমে এটি ব্যবহার করতে পারি না $?
:
gnuplot> file_exists = system("test -f exists.file; echo $?")
gnuplot> if (file_exists) { print "yes" } else { print "no" }
no
... আমাকে যুক্তিটি উল্টাতে হবে।
সুতরাং, আমাকে মূলত একটি কাস্টম স্ক্রিপ্ট সমাধান (বা ওয়ান-লাইনার হিসাবে একটি স্ক্রিপ্ট ইনলাইন লিখতে হবে) নিয়ে আসতে হবে ... এবং আমি ভেবেছিলাম, যদি ইতিমধ্যে 0 বা 1 মুদ্রণ করতে পারে এমন কোনও ডিফল্ট কমান্ড থাকে (বা ফাইলের অস্তিত্বের জন্য স্টাডআউট করার জন্য একটি কাস্টম বার্তা), তবে আমাকে এটি করতে হবে না :)
(দ্রষ্টব্য যে ls
কোনও প্রার্থী হতে পারেন, তবে এটি স্টাডআউট আউটপুটটি অনেক ভারবসজ; এবং যদি আমি এটি এড়াতে চাই তবে আমাকে সমস্ত আউটপুট দমন করতে হবে এবং আবার বিদ্যমান অবস্থায় ফিরে আসতে হবে)
$ ls exists.file 1>/dev/null 2>/dev/null ; echo $?
0
$ ls noexists.file 1>/dev/null 2>/dev/null ; echo $?
2
... তবে এটি আবার দুটি কমান্ড (এবং আরও টাইপিং), এবং "বিপরীত" যুক্তি ...)
সুতরাং, লিনাক্সে এটি করতে পারে এমন একটি ডিফল্ট কমান্ড রয়েছে?
( [ -f py_concur.py ] && echo "file exists" ) || echo "file does not exist"
?