在 csh 中获取 java 版本 (c shell)

Get java version in csh (c shell)

我需要使用 c-shell 脚本获取我的 java 版本。 我需要将它放入一个变量中,然后使用它进行一些操作和测试。 在 bash 中,此命令有效:

local javaVersion=$(java -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"//; 1q')

但在 c-shell 中,当我尝试时:

set javaVersion=$(java -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"//; 1q')

我明白了

"Ambiguous output redirect."

错误。

是的,我必须使用 c-shell,而不是 Bash 或任何其他语言。

我在互联网上搜索了这个论坛和其他论坛,但没有找到任何有用的信息。

谢谢。

这是一种对你和对我都适用的方法:

> set javaVersion=`java -version |& sed 's/.* version "\(.*\)\.\(.*\)\..*"//; 1q'`
> echo $javaVersion
18

变化是:

  • $( command )替换为`command`;前者是推荐的当前 POSIX shell 语法,但从未被 csh.

  • 实现
  • 2>&1 |替换为|&;前者是 Bourne shell 特有的,后者是 csh 特有的。

  • java version替换为.* version;这不是绝对必要的,但在我的机器上简化了我的测试,因为 java -version returns openjdk version...,而不是 java version...