对于我的家庭作业,如果磁盘空间低于某个阈值,我需要向指定的电子邮件地址发送电子邮件。但是,我在将电子邮件地址传递给变量时遇到问题。用户可以在命令提示符下指定任意数量的电子邮件地址。此外,如果它们不包含域,电子邮件仍应发送到“@uml.edu”地址。
我试图通过使用数组来解决用户输入未知数量的电子邮件地址的问题。我从未真正在 bash 中使用过数组,我想我可能使用了不正确的语法。
我不知道我是否一定需要使用数组来完成我正在做的事情,但它似乎最有意义。我尝试使用 for 循环来接受多个值,并且我使用 case 语句来处理用户是否包含电子邮件地址的域。
#!/bin/bash
email=()
for {{ x=0; $#<0; x++ ))
do
case $1 in
*@*) email[x]="$1"
shift ;;
*) email[x]="${1}@uml.edu"
shift ;;
esac
done
echo ${email[@]}
上面的代码基本上是一个测试用例,一旦我开始工作,我就会在我的主代码中工作。预期的结果是用户可以在命令行输入一个或多个电子邮件地址,然后通过 echo 命令显示它们。
使用+=
追加到一个数组,像这样:
array+=(foo bar baz)
这会让你摆脱x
变量。您还可以循环遍历"$@"
而无需shift
争论。
for arg in "$@"; do
case $arg in
*@*) email+=("$arg");;
*) email+=("[email protected]");;
esac
done
如有疑问,请引用您的变量扩展。
echo "${email[@]}"
(case $arg in
上面不需要它。但如果你在那里引用它也无妨。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句