Я хочу, чтобы в скрипте bash (Linux) проверялось, если два файла идентичны. Я использую следующий код:Delimiter ", пробелы и скрипт bash в Linux
#!/bin/bash
…
…
differ=$(diff $FILENAME.out_ok $FILENAME.out)
echo "******************"
echo $differ
echo "******************"
if [ $differ=="" ]
then
echo "pass"
else
echo "Error ! different output"
echo $differ
fi
Проблема: Команда возврата
- разн белое пространство и разорвать, если команда
выход
******************
82c82 < ---------------------- --- > ---------------------
******************
./test.sh: line 32: [: too many arguments
Error ! different output
Вы можете использовать 'дифф -b', но проблема не была белого пространства в файлах; это пробел (новые строки и т. д.) на выходе из 'diff' (которые появляются независимо от того, существует ли разница в расстоянии в файлах). Информация о 'diff -b' действительна; это просто касательно вопроса в вопросе. Кроме того, хотя есть внешняя программа '/ bin/[', все оболочки используют встроенную команду '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –
Согласен с тем, что весь устаревший код использует 'test или [' для возрастов, но я считаю, что хотя бы более новый код должен отдавать предпочтение использованию '[[' или '((' 'Согласовано полностью с вашими точками на' diff -b' и ваша рекомендация использовать cmp. – anubhava
Я еще не дошел до точки, где я использую '[[' или '((' в предпочтении к '['; я могу получить там в конце концов, но '[' отлично работает для меня большую часть времени. '[[' имеет совпадение регулярных выражений, это новое и полезное. Оно позволяет «<' and '>» означать сравнение не перенаправлением ввода-вывода, но я никогда не пропускал это. AFAICR, используя '((' для арифметики , это только совпадение - способ тестирования условий. Как я уже сказал, я нереформированный (или полуреформированный) старый школьный программист. Я не думаю, что злоупотребление, наложенное на '' ', полностью оправданно, - это исправное пока вы относитесь к нему с уважением, которое ему следует дать. –