1

我无法解决这个问题,似乎我在 awk 中的命令不够好:

基本上我想从一个简单的 Linux ls -l 中提取信息:

ls -l /etc/alternatives/java

lrwxrwxrwx. 1 root root 29 Apr  5 12:28 /etc/alternatives/java -> /jre/IBM/JDK6SR10FP1/bin/java

然后我使用 awk 来检索这部分:

 ls /etc/alternatives/java -l | awk -F"->" '{print $2}'
 /jre/IBM/JDK6SR10FP1/bin/java

由于我需要删除尾随的 /bin/java 以使其成为有效的 $JAVA_HOME,如何在 bash 中执行此操作?

我想要的是:

/jre/IBM/JDK6SR10FP1

提前谢谢了

4

1 回答 1

2

假设您将此值分配/jre/IBM/JDK6SR10FP1/bin/javaJAVA_HOME使用命令替换:

JAVA_HOME=$(ls /etc/alternatives/java -l | awk -F"->" '{print $2}')

然后你可以使用删除尾随部分

JAVA_HOME=${JAVA_HOME%/bin/java}

有关更多信息,请参见例如操作字符串部分

于 2013-04-05T02:32:47.850 回答