разница команд в Solaris и оболочке linux

Я получил этот фрагмент из сценария оболочки, он отлично работает в среде Solaris

grep -h '??.*??' $1/{CT,{MYDIR{85,97}}{,_E}}/R*txt 

но когда я пытаюсь запустить скрипт оболочки в ubuntu, он дает следующую ошибку

  • Расшифровать второй зашифрованный LVM во время загрузки безглавых серверов?
  • О замене окон на Ubuntu 11.10. Это вызовет проблемы?
  • Обновление единого пакета от Ubuntu Utopic Unicorn при запуске Trusty Tahr
  • Отсутствует 32-битная библиотека на 64-битной установке Linux
  • rsync очень медленный (фактор 8-10) по сравнению с cp при копировании файлов из nfs-share в локальный каталог
  • Ошибка MDADM RAID 0
  •  grep: ./{MYDIR85}/R*txt: No such file or directory grep: ./{MYDIR85}_E/R*txt: No such file or directory 

    после небольшого редактирования он работает правильно, я удалил фигурные скобки MYDIR

     grep -h '??.*??' $1/{CT,MYDIR{85,97} {,_E}} /R*txt 

    Я хочу знать, в чем проблема, это командная несовместимость между linux и solaris?

    Обратите внимание: у меня есть три каталога MYDIR85, MYDIR97 и CT – в ubuntu, shell is / bin / bash – в solaris я не знаю тип оболочки, но первая строка сценария оболочки – #! / Bin / bash

  • Вызовы синхронизации / fsync замедляются после 30 минут безотказной работы
  • Могу ли я поместить 2 диска в массив raid-0 без изменения FS?
  • Различия между Debian и Ubuntu GNOME?
  • Виртуальные пакеты с reprepro?
  • Почему Debian Bug-Squash занимает много времени по сравнению с Ubuntu?
  • Как навсегда удалить все связанные с Mono пакеты (библиотеки, приложения и т. Д.)
  • One Solution collect form web for “разница команд в Solaris и оболочке linux”

    Согласно файлам bash

    Правильно сформированное расширение скобки должно содержать некотируемые открывающие и закрывающие фигурные скобки и, по меньшей мере, одну некотируемую запятую или правильное выражение последовательности . Любое неправильное формирование скобки остается неизменным.

    В вашем выражении {MYDIR{85,97}} внешняя фигурная скобка не имеет ни кавычки, ни символа последовательности, поэтому остается нерасширенной, что приводит к {MYDIR85} {MYDIR97} . Для иллюстрации, вы можете получить желаемое поведение, добавив конечную запятую:

     bash $ echo {MYDIR{85,97},} MYDIR85 MYDIR97 

    хотя это приведет к добавлению лишнего – предположительно нежелательного элемента – _E в ваше составное выражение {CT,{MYDIR{85,97}}{,_E}} .


    Я не знаю, почему вы видите другое поведение в Solaris, за исключением того, что csh удаляет внешние фигурные скобки при этом условии (хотя он также принимает форму конечной запятой – как и ksh и zsh ):

     csh % echo {MYDIR{85,97}} MYDIR85 MYDIR97 csh % echo {MYDIR{85,97},} MYDIR85 MYDIR97 
    Linux и Unix - лучшая ОС в мире.