Привет Я использую команду find в своем скрипте, чтобы получить список файлов журнала, измененных за один день, и используя список для grep. Но если файл не найден, значит, он не выходит из оболочки. Могу ли я использовать какие-либо условия для проверки перед использованием команды. Если да, то как это проверить.Как проверить список команд, если нет файлов, а затем exit
#!/bin/bash
grep 'EXSTAT|' $(find . -mtime 0 -type f)|grep '|S|'|/usr/xpg4/bin/awk -F"|" '{a[$11]++;c[$11]+=$14}END{for(b in a){print b"," a[b]","c[b]/a[b]}}'
Я пробовал только grep ниже, но без ответа, и я должен заканчивать CTRL + C.
bash-3.2$ ls -ltr
total 126096
-rw-r----- 1 tibco tibco 10486146 Sep 4 09:20 ivrbroker.log.6
-rw-r----- 1 tibco tibco 10486278 Sep 9 14:45 ivrbroker.log.5
-rw-r----- 1 tibco tibco 10492782 Sep 14 14:54 ivrbroker.log.4
-rw-r----- 1 tibco tibco 10487657 Sep 16 13:17 ivrbroker.log.3
-rw-r----- 1 tibco tibco 10486437 Oct 29 10:26 ivrbroker.log.2
-rw-r----- 1 tibco tibco 10485955 Nov 17 11:28 ivrbroker.log.1
-rw-r----- 1 tibco tibco 1537673 Nov 18 08:48 ivrbroker.log
bash-3.2$ find . -mtime 0 -type f
bash-3.2$ grep 'EXSTAT|' $(find . -mtime 0 -type f)
#!/bin/bash
bnkpath=/tibcouat1_fs/tibco/deployment/egypt/bnk/broker/logs/
file_list=$(find $bnkpath -mtime 0 -type f)
if [ -z $file_list ]; then
echo "No log file found"
else
echo "log file found"
grep 'EXSTAT|' $(find $file_list -mtime 0 -type f)|grep '|S|'|/usr/xpg4/bin/awk -F"|" '{a[$11]++;c[$11]+=$14}END{for(b in a){print b"," a[b]","c[b]/a[b]}}'
fi
bash-3.2$ ./bnk1.sh
./bnk1.sh: line 4: [: too many arguments
log file found
Я добавил условие в сценарии, если [- z $ file_list]; затем echo «Файл журнала не найден» еще echo «файл журнала найден», но слишком много аргументов на экране после этого вывода – Guru
Вы забыли добавить fi. Конец if;) –