Вие сте прав, когато казвате, че "не използвате правилно stdin". Всъщност, от фрагмента на скрипта, който предоставихте, вашият скрипт предполага, че получавате файловете като аргументи на командния ред ... вие изобщо не използвате stdin!
В горния десен ъгъл на действието Run Shell Script, под X има падащо поле с 2 опции: „Предаване на вход: към stdin“ и „Предаване на вход: като аргументи“. Тези опции диктуват как избраните файлове се предават на действието на вашия скрипт. Ако е избрана опцията „като аргументи“, вашият скрипт трябва да използва следния шаблон
for f in "$@"; do
# so stuff here
done
Този шаблон се предоставя от самото действие, когато е избрано „като аргументи“.
От друга страна, ако е избрана опцията „към stdin“, тогава вашият скрипт трябва да използва този шаблон:
while read fname; do # read each line - assumes one file name per line
# do clever stuff with the filename
echo $fname # to illustrate we'll simply copy the filename to stdout
done
(В случай, че не знаете bash скриптове, всичко след # на ред е коментар)
Обърнете внимание, че шаблонът, предоставен от действието на скрипта, е проста, единична команда
cat
Не е много полезно според мен.
Обърнете внимание, че докато всъщност не въведете текст в областта на скрипта, смяната между „към stdin“ и „като аргументи“ ще промени съдържанието на полето за скрипт (предполагам, че това е намек за това как трябва да изглежда вашият скрипт), но след като въведете нещо , превключването вече не се случва.
person
ehzone
schedule
31.08.2012