awk -v RS='[{},]' '/^"(games|toys|books)"/{ sub("^.*:",""); print; }' file
0
0
0
50
30
20
10
30
20
или всего одним словом:
awk -v pattern=games -v RS='[{},]' '$0 ~ "^\"" pattern "\"" { sub("^.*:",""); print; }' file
0
50
10
Вы не устанавливаете псевдоним. В myecho = $ (echo)
, echo
выполняется, и его вывод (ничего, поскольку эхо не имеет ничего, чтобы эхо) сохраняется в переменной myecho
. Это, однако, имеет некоторый вывод от echo:
$ myecho=$(echo "Hello")
$ echo "$myecho"
Hello
И переменная myecho
сохранила его.
Я считаю, что во втором сценарии вам нужно выполнить echo
с помощью переменной myecho
. Это делается так:
#!/bin/bash
apps=$(brew cask list)
myecho="echo"
for app in ${apps}
do
${myecho} "${app}"
done
Все вышеперечисленное не имеет ничего общего с псевдонимом. Псевдоним определяется следующим образом:
alias myecho='echo'
Но тогда в строке для выполнения псевдонима не должно быть $
:
myecho "${apps}"
В этой команде
myecho=$(echo)
вы устанавливаете myecho
в пустой токен. Поэтому следующая команда
${myecho} "${app}"
- это просто "${app}"
, что, очевидно, является "foo" (не то, что было задумано). Вы бы сделали псевдоним, используя другой синтаксис:
alias myecho="echo"
Дополнительная литература:
$(
use)