var=$(echo "asdf")
echo $var
# => asdf
Используя этот метод, команда сразу оценивается и сохраняется ее возвращаемое значение.
stored_date=$(date)
echo $stored_date
# => Thu Jan 15 10:57:16 EST 2015
# (wait a few seconds)
echo $stored_date
# => Thu Jan 15 10:57:16 EST 2015
То же самое с обратным шагом
stored_date=`date`
echo $stored_date
# => Thu Jan 15 11:02:19 EST 2015
# (wait a few seconds)
echo $stored_date
# => Thu Jan 15 11:02:19 EST 2015
Использование eval в $(...)
не будет оцениваться позже
stored_date=$(eval "date")
echo $stored_date
# => Thu Jan 15 11:05:30 EST 2015
# (wait a few seconds)
echo $stored_date
# => Thu Jan 15 11:05:30 EST 2015
Используя eval, он оценивается при использовании eval
stored_date="date" # < storing the command itself
echo $(eval $stored_date)
# => Thu Jan 15 11:07:05 EST 2015
# (wait a few seconds)
echo $(eval $stored_date)
# => Thu Jan 15 11:07:16 EST 2015
# ^^ Time changed
В приведенном выше примере, если вам нужно запустить команду с аргументами, поместите их в строку, которую вы храните
stored_date="date -u"
# ...
. Для сценариев bash это редко актуально, но последнее примечание. Будьте осторожны с eval
. Eval только строки, которыми вы управляете, никогда не строки, исходящие от ненадежного пользователя или созданные из ненадежного пользовательского ввода.
В настоящее время, без каких-либо дополнительных зависимостей, и если вы не хотите обновлять схему, вы не можете контролировать форму объекта, возвращаемого GraphQL, если вы хотите контролировать форму, которая может быть возможна с помощью graphql-leveler.
graphql-leveler предоставит вызов метода _get, с помощью которого вы можете управлять формой вашего объекта, который вы можете сделать просто:
{
brandName: _get(products: 'brand.name')
}
Примечание: чтобы использовать graphql-leveler, просто добавьте graphql-leveler к вашим зависимостям требуется LevelerObjectType и используйте его вместо GraphQLObjectType. Готово!