在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