Tente isto:
INPUT_FILE='ls -rt "$MY_DIR"/FILE.*.xml | head -1 | xargs -r basename'
Passar xargs
o -r
flag fará com que ele execute somente basename
se as leituras de
menos um item da entrada padrão ( head -1
).
head -1
será executado, mas você não verá nem capturará nenhuma saída dele.
Além disso, se você não quiser que o usuário veja qualquer saída de erro de ls
, poderá redirecionar o fluxo stderr de ls
para /dev/null
.
INPUT_FILE='ls -rt "$MY_DIR"/FILE.*.xml 2> /dev/null | head -1 | xargs -r basename'
Observe também que adicionei aspas em torno de $MY_DIR
. Dessa forma, o comando não falhará se $MY_DIR
contiver espaços.
Se você estiver usando um shell moderno como o bash, você deve usar um shell de captura $( )
em vez de backticks. Você também deve considerar mudar o estilo de suas variáveis. Você geralmente deve evitar usar nomes de variáveis em maiúsculas em scripts. Esse estilo geralmente é reservado para variáveis reservadas e ambientais.
input_file=$(ls -rt "$my_dir"/FILE.*.xml 2> /dev/null | head -1 | xargs -r basename)