如何在 ksh 中使用这个功能?

How to use this function with ksh?

我在bash中编写了以下函数:

msend() { f=$(mktemp) ; rm -f $f ; if [ "$#" -gt 1 ] ; then ; d_zip=true ; zip $f "$@";filename="$f.zip" ; uuencode $f $filename | mail  -s "$filename" $mail_addr ; else ; uuencode   | mail  -s "" $mail_addr ; fi ; }

这个函数很好用,但问题是它写在 bash,有一些终端只允许使用 ksh 我想把这个函数翻译成 ksh,我很感激任何帮助克服这种情况。

我为了更清楚地使用这个函数首先你必须在你的电子邮件中声明以下变量:

mail_addr=YOUR_EMAIL_ADDRESS.

在 KSH 93u+ 中不崩溃:

msend() {
  f=$(mktemp)
  rm -f "$f"
  if [ "$#" -gt 1 ]; then
    d_zip=true
    zip "$f" "$@"
    filename="$f.zip"
    uuencode "$f" "$filename" | mail  -s "$filename" "$mail_addr"
  else
    uuencode " " | mail  -s "" "$mail_addr"
  fi
}

你原来的 post 中唯一的奇怪之处是虚假的 ;。如果失败,则与命令和参数有关,与语法无关。