Действительно ли это - ошибка для соединения с-t\t?

Я уверен, что существует несколько случаев исключения, но в целом большая часть программного обеспечения Linux является довольно портативной через главные дистрибутивы. С Ubuntu и это - кузен Debian, являющийся двумя из самых больших дистрибутивов, маловероятно, что авторы программы проигнорировали бы их. Основное исключение - то, что не все версии упаковываются для всех дистрибутивов быстрым способом. Вы могли бы столкнуться с ситуациями, где один дистрибутив в настоящее время имеет более новую версию в их репозиториях, чем другой дистрибутив.

В целом Вы, более вероятно, найдете программное обеспечение упакованным для Ubuntu и Не Fedora/RedHat, чем Вы наоборот, но это - обобщение и существует некоторое программное обеспечение, найденное в каждом, который не находится в других.

4
18.02.2014, 18:14
1 ответ

-t \t передачи t как разделитель: неупомянутая обратная косая черта всегда берет следующий символ буквально (кроме тех случаев, когда следующий символ является новой строкой). -t "\t" передачи \t как разделитель, различные версии join может вести себя по-другому, когда Вы передаете несколько символов.

Передать вкладку, от удара, использования -t $'\t'. $'…' синтаксис подражает функции C и многих других языков где \ сопровождаемый буквами определяют управляющие символы, и \ может сопровождаться восьмеричными цифрами.

Иначе должен поместить литеральную вкладку в Ваш сценарий (между одинарными или двойными кавычками). Это не очень читаемо.

Если Вам нужна мобильность ко всем оболочкам POSIX такой как dash, использовать

tab=$(printf '\t')
join -t "$tab" …

или непосредственно join -t "$(printf '\t')" ….

2
27.01.2020, 21:00

Теги

Похожие вопросы