С сохранением этого кода в файл first
,
pattern=fo*
input=foo
case $input in
$pattern)
print T
;;
fo*)
print NIL
;;
esac
в -x
мы можем заметить, что переменная отображается как значение в кавычках, в то время как необработанное выражение не:
% zsh -x first
+first:1> pattern='fo*'
+first:2> input=foo
+first:3> case foo (fo\*)
+first:3> case foo (fo*)
+first:8> print NIL
NIL
То есть переменная обрабатывается как литеральная строка. Если вы проведете достаточно времени в zshexpn(1)
, вы можете знать о флаге замены glob
${~spec}
Turn on the GLOB_SUBST option for the evaluation of spec; if the
`~' is doubled, turn it off. When this option is set, the
string resulting from the expansion will be interpreted as a
pattern anywhere that is possible,
поэтому, если мы изменим $pattern
, чтобы использовать это
pattern=fo*
input=foo
case $input in
$~pattern) # !
print T
;;
fo*)
print NIL
;;
esac
вместо этого мы видим
% zsh -x second
+second:1> pattern='fo*'
+second:2> input=foo
+second:3> case foo (fo*)
+second:5> print T
T
для вашего случая шаблон должен быть заключен в кавычки:
pattern='(foo|bar)'
input=foo
case $input in
$~pattern)
print T
;;
*)
print NIL
;;
esac
Здесь можно использовать несколько подходов. Первый и самый простой — это использовать инструмент вроде tmuxinator для управления вашей конфигурацией tmux, если вы всегда хотите одного и того же.
Вы также можете создать сценарий tmux из командной строки. Например, вы можете сделать это, чтобы создать один новый сеанс с новым окном, разделенным на 4 -сторон :
.#!/bin/sh
tmux source-file <<EOF
new-session
split-window -h
split-window -v
select-pane -L
split-window -v
EOF
На страницах руководства tmux описаны команды, которые вы можете использовать; это намеренно разработано, чтобы быть очень скриптовым. Вы можете увидеть сценарий Ruby, который я использовал для этого .