bash + 如何使用子文件夹中的版本设置 cli 路径
bash + how to set cli PATH with version in sub folder
在/usr/hdp
文件夹下我们只能有一个以下子文件夹
2.6.5.0-292
2.6.4.0-91
2.6.0.3-8
例子
ls /usr/hdp/
2.6.5.0-292 current stack file.txt
我想使用以下cli,$VERSION
可以是以上版本之一
/usr/hdp/$VERSION/kafka/bin/kafka-reassign-partitions.sh
然后我在 bash 脚本中执行了以下操作
[[ -d /usr/hdp/2.6.5.0-292 ]] && VERSION=2.6.5.0-292
[[ -d /usr/hdp/2.6.4.0-91 ]] && VERSION=2.6.4.0-91
[[ -d /usr/hdp/2.6.0.3-8 ]] && VERSION=2.6.0.3-8
/usr/hdp/$VERSION/kafka/bin/kafka-reassign-partitions.sh
如果不经过[[ -d ...... ]]
的测试,我们是否可以更高效地进行上述设置?
我认为没有任何方法可以提高效率,如果您的要求是该目录应该存在,则无法避免对其进行检查。但是你至少可以通过使用循环来避免重复自己。
for ver in 2.6.5.0-292 2.6.4.0-91 2.6.0.3-8; do
if [[ -d "/usr/hdp/$ver" ]]; then
VERSION=$ver
break
fi
done
break
使脚本在列表中找到最新版本后立即跳过旧版本;您的原始代码会奇怪地做相反的事情。如果您真的想要最旧的可用版本,请将参数的顺序反转为 for
.
找到匹配后不检查任何其他人是这里的实际优化,尽管是一个非常小的优化。
如果您只能 个文件夹 2.6.5.0-292
、2.6.4.0-91
或 2.6.0.3-8
,则分配 VERSION=2.6.*
将扩展到唯一且正确的文件夹。
因此您的脚本可能如下所示:
VERSION=2.6.*
/usr/hdp/$VERSION/kafka/bin/kafka-reassign-partitions.sh
在/usr/hdp
文件夹下我们只能有一个以下子文件夹
2.6.5.0-292
2.6.4.0-91
2.6.0.3-8
例子
ls /usr/hdp/
2.6.5.0-292 current stack file.txt
我想使用以下cli,$VERSION
可以是以上版本之一
/usr/hdp/$VERSION/kafka/bin/kafka-reassign-partitions.sh
然后我在 bash 脚本中执行了以下操作
[[ -d /usr/hdp/2.6.5.0-292 ]] && VERSION=2.6.5.0-292
[[ -d /usr/hdp/2.6.4.0-91 ]] && VERSION=2.6.4.0-91
[[ -d /usr/hdp/2.6.0.3-8 ]] && VERSION=2.6.0.3-8
/usr/hdp/$VERSION/kafka/bin/kafka-reassign-partitions.sh
如果不经过[[ -d ...... ]]
的测试,我们是否可以更高效地进行上述设置?
我认为没有任何方法可以提高效率,如果您的要求是该目录应该存在,则无法避免对其进行检查。但是你至少可以通过使用循环来避免重复自己。
for ver in 2.6.5.0-292 2.6.4.0-91 2.6.0.3-8; do
if [[ -d "/usr/hdp/$ver" ]]; then
VERSION=$ver
break
fi
done
break
使脚本在列表中找到最新版本后立即跳过旧版本;您的原始代码会奇怪地做相反的事情。如果您真的想要最旧的可用版本,请将参数的顺序反转为 for
.
找到匹配后不检查任何其他人是这里的实际优化,尽管是一个非常小的优化。
如果您只能 个文件夹 2.6.5.0-292
、2.6.4.0-91
或 2.6.0.3-8
,则分配 VERSION=2.6.*
将扩展到唯一且正确的文件夹。
因此您的脚本可能如下所示:
VERSION=2.6.*
/usr/hdp/$VERSION/kafka/bin/kafka-reassign-partitions.sh