我必须编写此脚本,它将显示在其自己的行中输入的每个条目,并用“*****”分隔每一行。我已经在大部分时间内完成了这项工作,但现在我需要它来检测何时输入单词“TestError”和/或“now”作为参数。现在它的设置方式如果它们是线上的第一个参数,它将正确地检测到这些单词,我只是不确定如何将它设置在它将检测到单词的位置,而不管它在线上的哪个参数。我还需要帮助*?如果我不需要“TestError”或“now”,那么我需要它说“不知道该怎么做”的情况,目前它将为第一个参数而不是其余的参数。
它会以现在的方式运作吗?或者我只需要使用*?和*案例,只是在*?中添加if / then / else / fi语句? case以便找到“TestError”“now”和任何其他参数。
# 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 "%s\n*****\n" "Do not know what to do with " "$@"
;;
*)
usage
;;
esac
答案 0 :(得分:2)
您需要遍历参数,为每个参数执行eigs
语句。
pcacov
U
和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 "%s\n*****\n" "Do not know what to do with " "$@"
;;
*)
usage
;;
esac
done
(*
)吗?