я наткнулся на интересную вещь в Shell Scripting и не 100% уверен, почему поведение как этотShell Script Variable Scope с commnd
Я попытался ниже сценарий:
#!/bin/sh
CMD="curl -XGET http://../endpoint";
var1=eval $CMD | sed -e 's/find/replace/g';
echo $var1; # Output: printed the value on this line
echo $var1; # Output: blank/no data printed (Why it is blank?)
я должен был изменить команда в переменной, включающей back-tick `, чтобы печатать переменную столько раз, сколько я хотел.
CMD="curl -XGET http://../endpoint";
var1=`eval $CMD | sed -e 's/find/replace/g'`;
echo $var1; # Output: printed the value on this line
echo $var1; # Output: printed the value on this line
- Почему я должен окружить свою команду с `присвоить это о/р переменный в последующем использовании переменного?
У меня такое ощущение, что оно имеет какое-то отношение к области переменных.
Пролить свет на мое понимание будет оценено!
UPDATE: Я попробовал команду ниже, и она работает в моем env.
#!/bin/sh
CMD="curl -XGET http://www.google.com/";
var1=eval $CMD | sed -e 's/find/replace/g';
echo $var1; # Output: printed the value on this line
echo "######";
echo $var1; # Output: blank/no data printed (Why it is blank?)
Обратите внимание, что синтаксис «$ (...)» предпочтительнее по сравнению с синтаксисом обратного хода. Вот объяснение: http://mywiki.wooledge.org/BashFAQ/082 – pmohandas
Спасибо pmohandas за предложение. – rohit12sh