Вам нужно сделать это в одной строке или вы хотите, чтобы пользователь вводил две даты в одной строке?
Если все, что вам нужно, это чтобы пользователи вводили две даты в командной строке,Вы можете сделать это:
read -p "Enter two dates in YY/MM/DD format: " date1 date2
Затем, после ввода пользователем двух дат, вы можете проанализировать их, чтобы убедиться, что они в правильном формате.Вы можете продолжать цикл до тех пор, пока даты не будут правильными:
while 1
do
read -p "Enter two dates in 'DD/MM/YYY' format: date1 date2
if [ ! date1 ] -o [ ! date2 ]
then
echo "You need to enter two dates."
sleep 2
continue
if
[other tests to verify date formats...]
break # Passed all the tests
done
Если вы можете вводить даты по одному, вы можете манипулировать переменной IFS
, чтобы использовать косые черты вместо пробелов в качестве разделителей.
OLDIFS="$IFS" #Save the original
IFS="/"
read -p "Enter your date in MM/DD/YYYY format: " month day year
IFS="$OLDIFS" #Restore the value of IFS
Это можно поместить в цикл while
, как в примере выше, где можно проверить правильность ввода дат.
На самом деле, вы можете сделать это:
OLDIFS="$IFS" #Save the original
IFS="/ " #Note space before quotation mark!
read -p "Enter two dates in MM/DD/YYYY format: " month1 day1 year1 month2 day2 year2
IFS="$OLDIFS" #Restore the value of IFS
echo "Month #1 = $month1 Day #1 = $day1 Year #1 = $year1"
echo "Month #2 = $month1 Day #2 = $day2 Year #2 = $year2"
И получить обе даты в одной командной строке.