В чем разница между непосредственным использованием команды shell (например, foo) и использованием $(foo)?

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
0
28.04.2016, 09:06
2 ответа

Вы не устанавливаете псевдоним. В 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}"
1
28.01.2020, 02:27

В этой команде

myecho=$(echo)

вы устанавливаете myecho в пустой токен. Поэтому следующая команда

${myecho}  "${app}"

- это просто "${app}", что, очевидно, является "foo" (не то, что было задумано). Вы бы сделали псевдоним, используя другой синтаксис:

alias myecho="echo"

Дополнительная литература:

2
28.01.2020, 02:27

Теги

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