【问题标题】:How to use local jdk in SDKMAN! script如何在 SDKMAN 中使用本地 jdk!脚本
【发布时间】:2021-02-02 05:13:32
【问题描述】:

我的脚本更改为使用 sdkman 安装的 jdk,但未更改为本地脚本。如何使用 sdkman 在脚本中更改为我的本地 oracle 8 v261 jdk?

脚本

#!/bin/bash
. /usr/local/sdkman/bin/sdkman-init.sh
sdk ls java
for i in {"8_261-oracle", "9.0.4-open"}
do
  sdk u java $i
done

作为输出给出

[...]
               |     | 9.0.4        | open    | installed  | 9.0.4-open
               | >>> | 8.0.265      | open    | installed  | 8.0.265-open
               |     | 8.0.232      | open    | local only | 8.0.232-open
[...]
 Unclassified  |     | 8_261        | none    | local only | 8_261-oracle
================================================================================
Use the Identifier for installation:

    $ sdk install java 11.0.3.hs-adpt
================================================================================

Stop! java 8_261-oracle, is not installed.

Using java version 9.0.4-open in this shell.

我的灵感来自How to use SDKMAN! to install packages from within scripts

【问题讨论】:

  • Bash 括号表达式在这里展开成一个列表,所以不需要。 for i in {"8_261-oracle", "9.0.4-open"},直接改用for i in '8_261-oracle' '9.0.4-open'

标签: bash sdk sh sdkman


【解决方案1】:

您可以解析 sdkman 的输出以检索已安装 sdks 的列表,如下所示:

#!/bin/bash

sdks=`sdk list java | grep installed | awk -F"|" '{print $6}'`

for sdk in ${sdks[@]}; do
  sdk use java $sdk
  ### YOUR CODE HERE
done

我省略了. /usr/local/sdkman/bin/sdkman-init.sh 部分,因为我建议按照 sdkman 文档中的建议在 bashrc/zshrc 中设置它。

一个来自我~/.zshrc的例子:

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$YOUR_PATH/.sdkman"
[[ -s "$YOUR_PATH/.sdkman/bin/sdkman-init.sh" ]] && source "$YOUR_PATH/.sdkman/bin/sdkman-init.sh"

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2022-06-22
    • 2021-12-20
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多