我目前有一个Unix程序,我试图正确地使用getopts while循环,其中case命令嵌套在里面。在getopts里面while循环是一个case命令,在case case里面是两个选项,它们都是循环。这是当前的代码:
while getopts ufn: user
do
case "$user"
in
u)
tty=$(who | grep "$user " | cut -d\ -f 2)
until who | grep "$user " > /dev/null
do
sleep 60
done
echo "$user has logged onto $tty";;
f)
until find | home/students/shaunkolkman/$user
do
test -d $user || test -f $user
sleep 20
done
echo "$user is a file or directory";;
esac
done
user=$1
选项u是一个until循环,它寻找某人登录并显示该用户所在的tty。选项f是一个直到查找文件或目录的循环。直到循环工作完全正常。一旦我发现了这个问题,我们将在稍后添加选项n。
这是一个示例信息,其中包含对正在发生的事情的描述。
./mon4 -f vex
我面临的问题是来自-f的f被视为变量。随着-f仍被读取作为getopts的选项。我不明白为什么vex不被读作变量。