Bash $ PS1 разрушается в MAC-терминале [дубликат]

Вы получаете эту ошибку из цикла for , потому что цикл for фактически перебирает один элемент - строку , а не команду: « find / -name java 2> / dev / null », поэтому он работает:

echo find / -name java 2>/dev/null checking
find / -name java 2>/dev/null -version

... именно здесь возникает ошибка find .

Возможно, вы пытаетесь сделать:

for i in `find / -name java 2>/dev/null` 
do
  echo $i checking
  $i -version
done

... (с обратными кавычками вместо одинарных кавычек), и в этом случае я бы предложил что-то большее, например:

find / -name java -exec sh -c '"$1" -version' sh {} \; 2>/dev/null

Спасибо don_crissti за указание Лучшая версия Стефана find ... exec и за косвенное напоминание мне о методе bash, который один лучший способ найти и выполнить результаты, чем цикл по find :

shopt -s globstar dotglob
for match in /**/java
do
  echo match is "$match"
  "$match" -version
done

1
22.12.2015, 02:12
0 ответов

Теги

Похожие вопросы