Как преобразовать псевдоним для bash в псевдоним для csh? -> Или к tcl

Пожалуйста, попробуйте прочитать некоторую документацию, прежде чем размещать здесь. То, что вы просите, легко найти с помощью 5-минутного поиска в Google . Вы можете прочитать нашу страницу справки на , как задавать вопросы , чтобы лучше понять, как работает этот сайт.

В любом случае, вы можете передавать переменные в качестве аргументов с помощью параметра -v :

awk -F'[]]|[[]' -v var1="2014-04-07 23:00" -v var2="2014-04-08 02:00:01" \
  '$0 ~ /^\[/ && $2 >= var1 { p=1 }
   $0 ~ /^\[/ && $2 >= var2 { p=0 }
   p { print $0 }' log

Или вы можете установить переменные в блоке BEGIN :

awk -F'[]]|[[]' \
  'BEGIN{var1="2014-04-07 23:00"; var2="2014-04-08 02:00:01"}
   $0 ~ /^\[/ && $2 >= var1 { p=1 }
   $0 ~ /^\[/ && $2 >= var2 { p=0 }
   p { print $0 }' log

1
27.03.2019, 16:51
3 ответа

В bashэто должно быть:

alias s2st='ps -A | grep -E "a|b"'

(alias s2st="ps -A | grep -E "a|b""не будет не работать в bash, так как второй "закроет первый ", поэтому второй |не будет цитироваться ).

Вcsh

alias s2st 'ps -A | grep -E "a|b"'

Сильными кавычками в bashи cshявляются '...'. Они менее сильны в csh, хотя там, где !и новая строка (и обратная косая черта перед )по-прежнему являются особыми.

В TCL сильные кавычки — это {...}с дополнительным преимуществом, состоящим в том, что {и }могут встречаться внутри них, если они совпадают.

3
27.01.2020, 23:18

Благодаря Стефану Шазеласу я нашел свою проблему:

Мой псевдоним хранится в сценарии tcl, поэтому мне нужен правильный синтаксис tcl,:

set-alias s2st {ps -A | grep -E "a|b"}
1
27.01.2020, 23:18

В Tcl я бы написал

proc psgrep {pattern} {
    return [join [lsearch -regexp -inline -all [split [exec ps -A] \n] $pattern] \n]
}

set output [psgrep {a|b}]
0
27.01.2020, 23:18

Теги

Похожие вопросы