قذيفة موجه المستخدم النصي / الإدخال
سؤال
وهذا هو كورن الخام شيل أن شخصا آخر كتب. أنا لا أعرف الكثير عن باستخدام بناء الجملة قذيفة وأنا لست حتى متأكدا مما إذا كان ذلك ممكنا.
هل هناك أي وسيلة بالنسبة لي لتشغيل هذا الملف وتطالب تاريخ لدرجة أنني لم يكن لديك للذهاب يدويا في السيناريو وتغييرها في كل مرة؟
وعلى سبيل المثال، أريد أن تحل محل "1/12/09" مع المتغير الذي يؤخذ من موجه للمستخدم.
#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
المحلول
إذا كنت تريد أن تتم مطالبتك (في مقابل تمرير التاريخ كمعلمة)، استخدم المنطق التالية (أو شيئا من هذا القبيل):
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
done
وسوف يستمر هذا حلقة للمطالبة التاريخ وحتى يقوم المستخدم بإدخال شيء (أي شيء) بخلاف عائد بسيط.
إذا كنت ترغب في إضافة بعض التحقق من صحة بسيطة، وكنت تستخدم نسخة من KSH هذا KSH93 أو أفضل، لا شيء من هذا القبيل:
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
if [[ $date =~ ^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}$ ]]
then
break
fi
date=
done
نصائح أخرى
في عام من وسائط سطر الأوامر قذيفة النصي يمكن الوصول إليها مثل:
$0, $1, ... $N
وهكذا يمكن استبدال التاريخ ضمنية مثل:
./room_xls.pl $1
وتشغيله مثل
./myscript 1/12/09
و$ 1 هو أول سيطة سطر الأوامر. وهذا ينطبق حتى 9 $. تحقق هذا تعليمي للحصول على المزيد من جملة KSH الأساسي.