在 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...
我需要使用 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
returnsopenjdk version...
,而不是java version...