هل من الممكن ربط الوسائط بسطر الأوامر باستخدام علامات الاقتباس الخلفية؟
-
09-06-2019 - |
سؤال
أرغب في تنفيذ أمر نظام التشغيل من برنامج Ruby النصي الخاص بي ولكني أريد إضافة وسيطة من متغير Ruby.
أعلم أن هذا ممكن باستخدام الكلمة الرئيسية نظام مثل هذا :
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
ولكن هل هذا ممكن باستخدام "بناء جملة علامات الاقتباس الخلفية أو علامات التبويب الخلفية"؟(أعني باستخدام بناء الجملة هذا: ls
)
المحلول
لا، سيؤدي ذلك فقط إلى تسلسل الإخراج من ls
ومحتويات directory
.
ولكن يمكنك القيام بذلك:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
نصائح أخرى
`ls #{directory}`
ليست آمنة جدًا لأنك ستواجه مشكلات مع أسماء المسارات التي تحتوي على مسافات.
من الآمن القيام بشيء مثل هذا:
directory = '/home/paulgreg/'
args = []
args << "/bin/ls"
args << directory
system(*args)
نيك على حق، لكن ليست هناك حاجة لتجميع الحجج بشكل مجزأ:
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
لا تنتمي إلى StackOverflow