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

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

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

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

  • Как включить рекурсию сервера имен?
  • Началось с Ubuntu, apt-get upgrade, теперь у меня есть Trisquel?
  • Не удалось обновить имя хоста для Ubuntu Server (в Digital Ocean)
  • Как создать новый файл и отредактировать его как root?
  • Невозможно отформатировать HDD и установить Linux на гибридный ультрабук Dell
  • Как сопоставить кнопку PowerOff как End на XWindows?
  •  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

  • Как я могу найти имя пользователя по id в linux?
  • Как захватить стандартный вывод скрипта, который зависит от пользователя для ввода?
  • получение 553 - невозможно создать файл в vsftpd (ubuntu 12.04)
  • autofs с sshfs больше не работает
  • ajaxterm с использованием пропорционального шрифта
  • Включает ли Fedora все форматы фильмов из коробки?
  • 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 - лучшая ОС в мире.