我必须编写此脚本,在其中它将显示在自己的行中输入的每个条目,并将每条线与" *****"分开。我已经大部分时间都将其倒下了,但是现在我需要检测何时将" TestError"和/或"现在"作为参数输入。现在设置它的方式,如果它们是行上的第一个参数,它将正确检测到这些单词,我只是不确定如何将其设置在该单词的位置,无论其在线上如何。我还需要 * *吗?我需要说"不知道该怎么办"的情况是,对于不是" testerror"或"现在"的所有其他参数,目前它将为第一个参数而不是其余的参数。
它会像现在这样起作用吗?还是我只需要使用 *?和 *案例,然后在 *中放置一个if/then/else/fi语句?为了找到" testerror"现在"和任何其他参数。
# template.sh
function usage
{
echo "usage: $0 arguments ..."
if [ $# -eq 1 ]
then echo "ERROR: $1"
fi
}
# Script starts after this line.
case $1 in
TestError)
usage $*
;;
now)
time=$(date +%X)
echo "It is now $time"
;;
*?)
echo "My Name"
date
echo
usage
printf "%sn*****n" "Do not know what to do with " "$@"
;;
*)
usage
;;
esac
您需要在参数上循环,为每个参数执行case
语句。
for arg in "$@"; do
case $arg in
TestError)
usage $*
;;
now)
time=$(date +%X)
echo "It is now $time"
;;
*?)
echo "My Name"
date
echo
usage
printf "%sn*****n" "Do not know what to do with " "$@"
;;
*)
usage
;;
esac
done
*
和*?
将匹配相同的字符串。您的意思是字面上匹配?
(*?
)?