我是bash的新手。我试图以下列形式从用户那里获得2个输入:DD / MM / YYYY DD / MM / YYYY(日,月,年一行)。以下是我为dd尝试的内容(我还需要从两个输入中获取MM和YYYY):
dd1=read | cut -d'/' -f1 (I tried this with backquotes and it didn't work)
[用dd1做点什么......]
echo $dd1
$ dd1一直空着。我可以使用一些指针(不是具体的答案)来完成我的作业问题。感谢。
答案 0 :(得分:2)
你倒退了,试试这个;
read dd1 && echo $dd1|cut -d'/' -f1
答案 1 :(得分:0)
试一试。它将允许用户输入日期,并将在斜杠上为您分割。
IFS=/ read -r -p "Enter a date in the form DD/MM/YYYY: " dd mm yy
答案 2 :(得分:0)
您是否需要在一行上执行此操作,或者您是否希望用户在一行上输入两个日期?
如果您只需要用户在命令行上输入两个日期,则可以执行以下操作:
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"
并在同一命令行中获取两个日期。