我看到有一个功能请求,但他们没有注意到他们是如何解决它的。简而言之,我们下载一个groovy存档,解压缩它,并为存档中不是groovy可执行文件的每个文件创建从属,并且不以.bat结尾。然后我们为groovy做了更新替代。
GROOVY_ALT_SLAVES=""
for f in $(ls /opt/groovy-${GROOVY_VERSION}/bin | fgrep -v .bat | grep -v '^groovy$'); do
GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/${f} ${f} /opt/groovy-${GROOVY_VERSION}/bin/${f}"
done
update-alternatives --install /usr/bin/groovy groovy /opt/groovy-${GROOVY_VERSION}/bin/groovy 2000 ${GROOVY_ALT_SLAVES}
update-alternatives --set groovy /opt/groovy-${GROOVY_VERSION}/bin/groovy
我无法真正地围绕最好的方式来解决这个问题,这不仅仅是运行shell模块。一旦我自己决定使用shell模块,我就会读到像
这样的东西 - shell: GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/{{ item }} {{ item }} /opt/groovy-{{ groovy_version }}/bin/{{ item }}"
with_items: ['file1', 'file2']
不会工作,因为每个shell运行都是一个单独的连接,所以我没有真正构建一个长字符串然后附加到update-alternatives命令。还有一个事实我必须手动指定项目列表,因为我不能使用glob,因为我需要匹配与某组表达式不匹配的文件。
我确定我错过了一些明显的东西,但我没有在这个方面取得任何进展,任何帮助都会很棒。
答案 0 :(得分:0)
将你的字符串放在一个剧本中,只执行一次shell。
这样的事情:
@Override
protected void onResume() {
super.onResume();
TextView tv = textViews.get(yourId);
tv.setText("Your Text");
}
我没有对此进行测试,您可能必须使用转义- shell: update-alternatives --install /usr/bin/groovy groovy /opt/groovy-{{ groovy_version }}/bin/groovy 2000 {{ alt_slaves }}
vars:
alt_slaves: "{{ myfiles | map('regex_replace','(.*)','--slave /usr/bin/\1 \1 /opt/groovy-'+groovy_version+'/bin/\1') | list | join(' ') }}
才能使其正常运行。