我是Shell的新手,并尝试编写一些简单的脚本。
此处未调用if
子句或未调用for
循环。我已经分享了o / p
#!/bin/bash
set -x
read -p "enter Date in DD " d
if [$d -gt "00" -a $d -lt "31"]
then
echo "Choose any one month from given option: Jan,Feb,Mar,Apr,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
read m
for $m in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
do
case "echo $m" in
Jan) mnum=01;;
Feb) mnum=02;;
Mar) mnum=03;;
Apr) mnum=04;;
May) mnum=05;;
Jun) mnum=06;;
Jul) mnum=07;;
Aug) mnum=08;;
Sep) mnum=09;;
Oct) mnum=10;;
Nov) mnum=11;;
Dec) mnum=12;;
esac
echo "Month is $mnum"
done
else echo "Its an invalid Date"
fi
echo "Enter Year in YYYY"
read y
if echo $y |egrep "^[1|2][0-9][0-9]+$"
then
echo "Its Valid year"
echo "Your date is $d/$m/$y"
fi
~
输出:
./a.sh
+ read -p 'enter Date in DD ' d
enter Date in DD 23
+ '[23' -gt 00 -a 23 -lt '31]'
./a.sh: line 5: [23: command not found
+ echo 'Its an invalid Date'
Its an invalid Date
+ echo 'Enter Year in YYYY'
Enter Year in YYYY
+ read y
2015
+ echo 2015
+ egrep '^[1|2][0-9][0-9]+$'
2015
+ echo 'Its Valid year'
Its Valid year
+ echo 'Your date is 23//2015'
Your date is 23//2015
答案 0 :(得分:0)
<强> 1。如果声明是使用:
if
语句需要更正,whitespace
和[
之间,$d
和{{1}之间保持一个"31"
}}。
如果声明是
]
下面是scriptlet和示例输出。
Scriptlet:
if [ $d -gt "00" -a $d -lt "31" ]
<强>输出:强>
#!/bin/bash
set -x
read -p "enter Date in DD " d
if [ $d -gt "00" -a $d -lt "31" ]
then
echo $d
fi
<强> 2。对于循环问题
你的for循环在语法上是不正确的。因为您不能使用值(即$ sh try.sh
+ read -p 'enter Date in DD ' d
enter Date in DD 21
+ '[' 21 -gt 00 -a 21 -lt 31 ']'
+ echo 21
21
),而是需要使用变量(例如$m
)
正确的语法:m