如何在csh中执行case switch语句

如何在csh中执行case switch语句

在sh中,我知道我可以做如下的事情......

#!/sbin/sh

case "$1" in
'foo')
/path/to/foo.sh
;;
'bar')
/path/to/bar.sh
;;
*)
echo $"Usage: $0 {foo|bar}"
exit 1
;;
esac

我搜索了整个互联网,似乎找不到与我上面尝试执行的操作相匹配的相应 switch 语句。

在我们进一步讨论之前;我知道,我知道,我不应该使用 csh,但我有一个仅在 csh 中运行的旧应用程序。我正在尝试为其构建 Solaris SMF 服务,并且我已经尝试设置 shell,但方法文件中使用的任何 shell 都会覆盖实际的 SMF shell。所以它必须在csh中。

预先感谢您提供的任何帮助。

太长了;博士(如何将上面的内容转换为csh?)

答案1

我很高兴看到您了解 C-Shell 的缺点。

这是相同的脚本,转换为 C-shell (编辑$usage:在没有参数或超过 1 个参数的情况下更新为输出):

#!/usr/bin/env csh

set usage="Usage: $0 {foo|bar}"

if ( $#argv != 1 ) then
  echo $usage
else
  switch ($argv[1])
  case 'foo':
    /path/to/foo.sh
    breaksw
  case 'bar':
    /path/to/bar.sh
    breaksw
  default:
    echo $usage
    breaksw
  endsw
endif

相关内容