কমান্ড প্রম্পট থেকে if-বিবৃতি কার্যকর


19

ব্যাশে আমি নিম্নলিখিতগুলি করতে পারি:

if [ -f /tmp/test.txt ]; then echo "true"; fi

তবে, আমি sudoযদি সামনে যুক্ত করি তবে এটি আর কাজ করে না:

sudo if [ -f /tmp/test.txt ]; then echo "true"; fi
-bash: syntax error near unexpected token `then'

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



এটি sudoশুধুমাত্র testএবং / অথবা কেবলমাত্রদের কাছেই ভাল অনুশীলন echo। পুরো ifবিবৃতি নয়।
— জিপ্পি

মানে if sudo test? হ্যাঁ, এটি আরও ভাল হবে। আমি testছাড়া ব্যবহার করতে পারি না if, কারণ এটি অন্যথায় প্রস্থান কোড নির্ধারণ করে।
— m33lky

উত্তর:


14

sudoexecশেল ইন্টারপ্রেটারের মাধ্যমে নয়, তার যুক্তিটি ব্যবহার করে । অতএব, এটি প্রকৃত বাইনারি প্রোগ্রামগুলির মধ্যে সীমাবদ্ধ এবং শেল ফাংশন, উপকরণ বা বিল্টিনগুলি ( ifএকটি বিল্টিন ) ব্যবহার করতে পারে না । লক্ষ্য করুন -iএবং -sঅপশন একটি লগইন বা অ- লগ-ইন শেল যথাক্রমে দেওয়া কমান্ডগুলো ব্যবহার করা যেতে পারে (বা শুধু শেল সমস্যাগুলি ইন্টারেক্টিভ রূপে; মনে রাখবেন আপনি সেমিকোলন অব্যাহতি অথবা কমান্ড উদ্ধৃত করা হবে)।

$ sudo if [ -n x ]; then echo y; fi
-bash: syntax error near unexpected token `then'
$ sudo if [ -n x ]\; then echo y\; fi
sudo: if: command not found
$ sudo -i if [ -n x ]\; then echo y\; fi
y
$ sudo -s 'if [ -n x ]; then echo y; fi'
y

সুতরাং, আমি যদি ব্যবহার করি -iবা -s, যদি-বিবৃতিটি সঠিকভাবে মূল্যায়ন করা হয়?
— m33lky

1
হ্যাঁ, যতক্ষণ এটি উদ্ধৃত হয়েছে বা সঠিকভাবে পালিয়ে গেছে। আমার সম্পাদনা দেখুন।
— কেভিন

9

শেলের মাধ্যমে স্ট্রিং আর্গুমেন্ট হিসাবে লাইনটি কল করার চেষ্টা করুন।

sudo /bin/sh -c 'if [ -f /tmp/test.txt ]; then echo "true"; fi'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.