2013-06-02 4 views
0

Я пытаюсь найти исполняемые файлы. Попытка использовать оболочку bourne /bin/sh для большей переносимости. Ниже сценария echo s все с find: в начале строки.неожиданный сценарий оболочки оболочки bourne case case case

#!/bin/sh 
DIRS=`find/-perm -4000` 
for DIR in "$DIRS" 
do 
    case "$DIR" in 
    find:*);; 
    esac 
done 

ВОПРОС) Почему вторя для find:*), когда ни одна из команд не дают?

Если я добавлю предложение *) echo "$DIR";; в оператор case, он будет эхо-файлы, которые исполняются для текущего пользователя, это все, что я действительно хочу, но этого не происходит (я не написал сценарий для /bin/sh действительно, но это имеет сбиты с толку меня)

Да sed, awk, cut может сильно помочь, но некоторые из этих команд, скорее всего, не будут доступны (почему они не доступны. потому что они не могли бы быть!), поэтому я думал оболочки Борна версия более портативна. Может быть, есть лучший способ для подгонки /bin/sh, любые идеи?

ответ

0

Линии, которые вы пытаетесь избавиться от предположительно выглядеть следующим образом:

find: `/root': Permission denied 

Это сообщение об ошибке. Замена команды

`find ...` 

только фиксирует вывод, а не ошибки. Вам нужно добавить перенаправление включать ошибки:

`find ... 2>&1` 

Кроме того, -perm 4000 является УИП бит, а не исполняемый бит.

+0

Да, это означает сказать setuid. забыл перенаправить ошибки, дух. за это время я написал сценарий, спасибо за это. – gwillie

Смежные вопросы