Linux найти двоичный файл - PullRequest
3 голосов
/ 26 января 2012

Я пытаюсь найти двоичный файл в системе Linux, используя что-то вроде этого:

if [ -f `which $1` ] then
    echo "File Found"
else
    echo "File not Found"
fi

пока код работает нормально, проблема в том, что «который» вернет нулевой оператор, который BASH интерпретирует как нечто существующее, поэтому файл всегда возвращается найденным. Любые предложения будут великолепны.

Спасибо

Ответы [ 3 ]

6 голосов
/ 26 января 2012

Обновление

После нескольких размышлений нет смысла использовать [[ ]] (или [ ] в этом отношении).Нет даже причины использовать подстановку команд либо $()

if which "$1" > /dev/null 2>&1; then
  echo "found"
else
  echo "not found"
fi

Если вы используете bash, тогда используйте конструкцию [[ ]].Одним из преимуществ (среди многих) является то, что у него нет этой проблемы

[[ -f $(which $1) ]] && echo found

Кроме того, `` устарела, используйте $() вместо

3 голосов
/ 26 января 2012
if [ `which "$1"` != "" ]; then

which не вернет "", когда найдет двоичный файл.

1 голос
/ 26 января 2012

Мне нравится 'hash' для этого (если вы пользователь bash ..) (и на самом деле это более переносимое поведение, чем какое)

hash blahblah

bash: hash: lklkj: не найдено

hash /bin/ls <-- silently successful

Этот метод работает в Linux и OSX аналогичным образом, где «как» ведет себя по-разному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...