ksh: para loop fazer um loop pelos arquivos em um diretório particular

2
schema_dir=schema_app
for SCHEMA_CHANGE in $schema_dir/*
do

então meu pwd é /A/B/C/scripts dentro do qual eu tenho subdiretórios ( schema_app , schema_data , etc). Eu quero um loop para executar os arquivos em cada diretório, dependendo do parâmetro que eu passo para o script inicialmente.

Que erro estou fazendo aqui? Porque, quando eu faço eco de SCHEMA_CHANGE (o nome do arquivo), ele está mostrando assim schema_app/filename . como posso obter apenas o filename aqui?

    
por MRKR 13.12.2015 / 23:05

1 resposta

2

Você não está fazendo nada errado. schema_app/filename é o caminho correto para o arquivo. É o que você precisa passar para um comando (ou um redirecionamento) para trabalhar no arquivo. Usar filename sozinho não funcionaria: como o comando saberia em qual diretório o arquivo está?

Se, por algum motivo, você precisar do nome do arquivo sem a parte do diretório, poderá usar

"${SCHEMA_CHANGE##*/}"

Isso leva o valor da variável SCHEMA_CHANGE e remove a parte até e incluindo o último / (ou deixa o valor inalterado se não houver / ), portanto, você obtém o nome do arquivo sem sua parte de diretório.

    
por 14.12.2015 / 00:43