shell脚本:"'<<';“无与伦比”-使用here文档时出现语法错误
嗨,我正在尝试编写一个程序,如果感兴趣的人在给定时间上网,它会提醒用户。到目前为止,我的计划是shell脚本:"'<<';“无与伦比”-使用here文档时出现语法错误,shell,ksh,Shell,Ksh,嗨,我正在尝试编写一个程序,如果感兴趣的人在给定时间上网,它会提醒用户。到目前为止,我的计划是 #!/usr/bin/ksh message="" when="" validFiles="" validUsers="" if [ $# -gt 0 ] ; then while getopts w:m: opt do case $opt in w) when=$OPTARG;; m) message=$OPTARG;;
#!/usr/bin/ksh
message=""
when=""
validFiles=""
validUsers=""
if [ $# -gt 0 ] ; then
while getopts w:m: opt
do
case $opt in
w) when=$OPTARG;;
m) message=$OPTARG;;
\?) echo $USAGE exit 2;;
esac
done
shift $(($OPTIND - 1))
if [[ $# -gt 0 ]] ; then
for i; do
if [[ -f "$i" && -r "$i" ]]; then
if ! echo $validFiles | grep $i >/dev/null; then
validFiles="$validFiles $i"
fi
elif id $i 2> /dev/null 1>&2; then
if ! echo $validUsers | grep $i > /dev/null; then
validUsers="$validUsers $i"
fi
fi
done
if [[ $when != "" && $validFiles != "" || $validUsers != "" ]] ;then
for i in $validUsers; do
if ! grep $i $validFiles >/dev/null; then
at $when <<"END"
if finger $i | grep $i; then
echo "$i is online" | elm $message
fi
END
fi
done
fi
else
echo "No files or usernames"
fi
else
echo "No arguments provided"
fi
#/usr/bin/ksh
message=“”
when=“”
validFiles=“”
validUsers=“”
如果[$#-gt 0];然后
而getopts w:m:opt
做
案例$opt-in
w) 当=$OPTARG;;
m) message=$OPTARG;;
\?)echo$使用退出2;;
以撒
完成
班次$($OPTIND-1))
如果[$#-gt 0]];然后
为了我;做
如果[-f“$i”&&r“$i”];然后
如果!echo$validFiles | grep$i>/dev/null;然后
validFiles=“$validFiles$i”
fi
elif id$i 2>/dev/null 1>&2;然后
如果!echo$validUsers | grep$i>/dev/null;然后
validUsers=“$validUsers$i”
fi
fi
完成
如果[[$when!=”“&&&$validFiles!=”“| |$validUsers!=”“];然后
因为我在$validUsers;做
如果!grep$i$validFiles>/dev/null;然后
在$when处,此处的字符串分隔符不得缩进,您的结尾应位于行的开头:
$ cat <<EOT
> foo
> bar
> EOT
foo
bar
$cat条
>EOT
福
酒吧
如果希望缩进尾随分隔符,可以使用以下语法,但这也将从here文档本身中删除所有前导选项卡(这仅适用于选项卡!):
$cat条
>库克斯
>EOT
福
酒吧
库克斯
请注意,so指定的此行为应适用于所有兼容外壳:
如果重定向符号是“谢谢!我刚刚得到了它!在对命令本身的调用中是否还有定界符?比如at(delimiter)我不确定我是否理解您的问题,是否要重新措辞?好的,我不能缩进命令。是否有选项可以为我删除多余的空白?您可以缩进here文档内容,缩进量可以任意多或少,只是不允许缩进结束分隔符(否则解析器将不知道here文档的结尾),这应该不是问题吗?我添加了一些关于命令的信息
$ cat <<EOT
> foo
> bar
> EOT
foo
bar
$ cat <<-EOT
> foo
> bar
> quux
> EOT
foo
bar
quux