У вас три проблемы.
Одна проблема в том, что вам нужны пробелы вокруг [ ... ]
builtin.
[ -f $file ]
Другая проблема в том, что вывод ls -R
довольно бесполезен. ls -R
отображает имена файлов без части каталога, поэтому, если вы не сделаете относительно тяжелый разбор вывода, вы не сможете его использовать. Правильным инструментом для рекурсивного обхода каталогов является find
, который имеет другой синтаксис.
Третья проблема заключается в том, что вам не хватает двойных кавычек вокруг подстановок переменных. Это не полностью ломает скрипт, только если вы сталкиваетесь с именами файлов, содержащими пробелы или \[*?
. С такими именами файлов можно справиться без проблем, если не забывать всегда использовать двойные кавычки вокруг замен переменных и команд: "$file"
, "$(mycommand)"
. Дополнительную информацию см. в Почему мой сценарий оболочки подавляется пробелами или другими специальными символами?
find . -exec sh -c '
if [ "$0" ] …
' {} \;
Обратите внимание, что вы можете использовать find -...
find . -exec sh -c '
if [ "$0" ] …
' {} \;
.type f для выполнения команды (или вывода на печать) только для обычных файлов, или (в Linux) find -xtype f
для включения символических ссылок на обычные файлы.
Tener HDP 2.6.4 con Kafka 0.10.1 instalado, informó el script
/usr/hdp/2.6.4.0-91/kafka/bin$./connect-standalone.sh
USAGE:./connect-standalone.sh [-daemon] connect-standalone.properties
una propiedad para ejecutar como daemon usando la opción -daemon
.
¿Sería esto algo factible para ti?