команда env VAR=VAL или команда VAR=VAL

В соответствии с вопросом, который вы хотите удалить _, который находится в начале

Method1

echo "_some_String"| sed "s/^_//g"

output

some_String

Method2

echo "_some_String"| perl -pne "s/^_//g"

output
some_String

Method3

echo "_some_String"| awk '{gsub("^_","",$1);print $0}'

output

some_String
0
10.04.2018, 15:54
1 ответ

Не большая разница в результате для внешних команд. Выполнение envпросто включает дополнительный execдля выполнения синтаксического анализа присваивания переменной, который в противном случае выполняла бы оболочка. env -iбыл бы более полезен, так как он очищает среду, что не так просто сделать в оболочке.

В обоих случаях расширения, такие как подстановка команд VAR=$(somecmd), выполняются оболочкой до того, как произойдут назначения, и оба случая следуют за PATHи т. д. Единственное различие, которое я могу придумать, это значение _, который Bash устанавливает в имя команды, которую он запускает (, но envнет ). Конечно, без envвы также можете запустить встроенную версию команды оболочки.

1
28.01.2020, 02:43

Теги

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