Ну, он распутывается по одному слою за раз:
X{{a..c},{1..3}}Y
задокументировано как расширенное до X{a..c}Y
X{1..3}Y
(, которое X{A,B}Y
расширено до XA
XB
, где A
является {a..c}
и B
является {1..3}
), сами по себе задокументированы как расширенные доXaY
XbY
XcY
X1Y
X2Y
X3Y
.
Что, возможно, стоит задокументировать, так это то, что они могут быть вложены друг в друга (, что первый }
не закрывает первый {
там, например ).
Я полагаю, что оболочки могли решить сначала разрешить внутренние фигурные скобки, например, воздействуя на каждое закрытие }
по очереди:
X{{a..c},{1..3}}
X{a,{1..3}}Y
X{b,{1..3}}Y
X{c,{1..3}}Y
(, то есть A{a..c}B
расширяется до AaB
AbB
AcB
, где A
— это X{
, а B
— это,{1..3}Y
)
X{a,1}Y
X{a,2}Y
X{a,3}Y
X{b,1}Y
X{b,2}Y
X{b,3}Y
X{c,1}Y
X{c,2}Y
X{c,3}Y
XaY
X1Y
XaY
Xa2
... Но я не нахожу это особенно более интуитивным или полезным (см., например, пример Кевина в комментариях ), все равно будет некоторая двусмысленность в отношении порядка, в котором будут выполняться расширения, и это не какcsh
(оболочка, которая ввела растяжку в конце 70-х годов, а форма {1..3}
появилась позже (1995 )от zsh
и {a..c}
еще позже (2004 )отbash
)сделал это.
Обратите внимание, чтоcsh
(с самого начала, см. 2BSD (1979 )man-страницу)документировал тот факт, что расширения фигурных скобок могут быть вложенными,хотя явно не сказано, как будут расширены вложенные скобки. Но вы можете посмотреть код csh
от 1979 года , чтобы увидеть, как это делалось тогда. Посмотрите, как он действительно явно обрабатывает вложенность и как она разрешается, начиная с внешних фигурных скобок.
В любом случае, я действительно не понимаю, какое значение имеет расширение {a..c},{1..3}
. Там ,
не является оператором раскрытия фигурных скобок (, так как он не находится внутри фигурных скобок ), поэтому обрабатывается как любой обычный символ.
Если вы хотите, чтобы gnuplot
показывал вам результат извлечения квадратного корня, используйте функцию print()
любым из следующих способов:
•> print(sqrt(4));
или
•> a=sqrt(4);print(a);
или
•> a=4;print(sqrt(a));