В этом примере я упоминаю, что у меня есть 2 списка.
list1
x;00:26:82:50:00:00;192.168.1.195;COMPUTER1
x;00:26:82:50:11:11;192.168.1.195;COMPUTER2
x;00:26:82:50:22:22;192.168.1.196;COMPUTER3
list2
x;00:26:82:50:11:11;192.168.1.197;COMPUTER3
И когда я выполняю команду (спасибо ccs242 ):
for field in 2 3 4; do cut -d\; -f${field} list* | sort | uniq -d; done
Я получаю дубликаты
00:26:82:50:11:11
192.168.1.195
COMPUTER3
Теперь я хочу автоматизировать этот процесс с помощью скрипта bash, поэтому, если он не находит дубликаты, выполните определенную команду, но если скрипт обнаружит дубликаты, прервет и оставит дубликаты в / var / log / syslog
Это мой сценарий:
pathlist=/etc/doc
function duplicate(){
acls=`for field in 2 3 4; do cut -d\; -f${field} $pathlist/list* | sort | uniq -d; done`
if [ ${acls} == '' ]; then
echo OK
#run a command foo
else
echo "Duplicate Data. Abort. Check /var/log/syslog"
echo $acls >> /var/log/syslog
exit
fi
}
duplicate
Проблема здесь:
[ ${acls} == '' ]
Как я могу это исправить?
источник