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

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

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

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

 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

  • Обновления программного обеспечения Ubuntu с помощью apt-get
  • Как подключить Ubuntu 13.10 к телевизору через HDMI?
  • Как узнать, есть ли я в тюрьме, контейнере, снимке и т. Д. Окружении?
  • Как использовать Linux без каких-либо пользователей и разрешений
  • Сенсорная панель zig-zag в linux
  • Проблема с кодировкой символов при установке Linux?
  • Перенос данных 70 ТБ с одного удаленного сервера на другой
  • Поток камеры IDS uEye
  • 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 - лучшая ОС в мире.