有人有bash或awk一行程序来解析此命令的输出吗?
# whereis java
java: /usr/bin/java /usr/local/openjdk-8/bin/java那么,在这种情况下,它返回路径/usr/local/openjdk-8吗?some_script是什么?
# whereis java | some_script
/usr/local/openjdk-8我知道至少可以这么做,但现在我只想让/usr/local/openjdk-8
# whereis java | awk '{print($3)}'
/usr/local/openjdk-8/bin/java更新/编辑根据查尔斯·达菲的建议
使用此命令
# type -P -a java
/usr/local/openjdk-8/bin/java我怎么才能把它吹走才能得到这个?some_script是什么?
# type -P -a java | some_script
/usr/local/openjdk-8发布于 2020-12-30 19:24:16
whereis不是POSIX标准,也不是bash本身的一部分。因此,对于这项工作来说,这是一个特别糟糕的工具。
我强烈建议使用shell内置的type命令。如果您的目标是为在java查找过程中找到的第二份PATH找到顶层目录,那么:
{ read _; read -r java_loc; } < <(type -P -a java)
echo "Java was found at $java_loc"一旦实现了这一点,去掉/bin/java是一个简单的参数扩展(因为${var%suffix}指的是suffix之前的var中的所有内容):
{ read _; read -r java_loc; } < <(type -P -a java)
java_parent_loc=${java_loc%/bin/java}
echo "Java was found under ${java_parent_loc}"尽管如此,我绝不推荐这是一种设置你的JAVA_HOME的方法--它是非常脆弱的,对你的PATH订单做了一些假设,但这些假设并不一定是有充分根据的。
发布于 2020-12-30 20:36:05
尝尝这个
type -a -P java | grep -Eo "(/[^/]+){3}"https://stackoverflow.com/questions/65512407
复制相似问题