كيف يمكنني إنشاء تعليمات سطر الأوامر (يونكس/لينكس) التي تستخدم المتغيرات لتنفيذ أوامر عديدة؟

StackOverflow https://stackoverflow.com/questions/74886

  •  09-06-2019
  •  | 
  •  

سؤال

أحتاج إلى إعادة ترتيب بعض المحتوى في أدلة مختلفة ولكن الأمر مؤلم بعض الشيء.من أجل تصحيح أخطاء التطبيق الذي أعمل عليه (تطبيق روبي)، أحتاج إلى نقل جواهري إلى مجلد الأحجار الكريمة الخاص بي واحدًا تلو الآخر (قصة طويلة؛باختصار:أحدهما مكسور ولا أستطيع معرفة أي منهما).

لذلك أنا بحاجة إلى القيام بشيء مثل:

sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/

استبدال "foo" في كل مرة.كيف يمكنني تأليف برنامج نصي بسيط للسماح لي بفعل شيء مثل:GemMove("foo") ويقوم بملء الفراغات بالنسبة لي؟

هل كانت مفيدة؟

المحلول

ضع ما يلي في ملف اسمه Gemmove:

#!/bin/bash

foo=$1

if [ x$foo == x ]; then
  echo "Must have an arg"
  exit 1
fi

for d in gem doc specification ; do 
  mv backup/$d/$1 $d
done

ثم افعل

chmod a+x gemmove

ثم اتصل بـ "sudo Gemmove foo" لنقل جوهرة foo من النسخ الاحتياطية إلى النسخ الحقيقية

نصائح أخرى

يمكنك ببساطة استخدام وسيطات bash Shell، مثل هذا:

#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...

ثم قم بتنفيذه على النحو التالي:

sudo ./move.sh foo

تأكد من جعل البرنامج النصي قابلاً للتنفيذ باستخدام

chmod +x move.sh

في باش، شيء من هذا القبيل:

function gemMove()
{
filename=$1
   mv backup/gem/$filename gem/$filename
   mv backup/doc/$filename doc/$filename
   mv backup/specification/$filename.spec specification
}

ثم يمكنك الاتصال فقط gemMove("foo") في مكان آخر من البرنامج النصي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top