Получите список переменных, имя которых соответствует определенному шаблону

Позвольте мне сначала ответить на ваш второй вопрос:

expressionNames

expressionNames используются для интерполяции. Это означает, что после интерполяции этот объект выражения фильтра:

"expression": "#partitionKey = :value",
"expressionNames": {
    "#partitionKey": "id"
}

будет преобразован в:

"expression": "id = :value",

#partitionKey действует как заполнитель для имени вашего столбца id , '#' оказывается разделителем.

Но почему?

expressionNames необходимы, потому что некоторые ключевые слова зарезервированы DynamoDB , что означает, что вы не можете использовать эти слова внутри выражения DynamoDB.

expressionValues ​​

Когда вам нужно сравнить что-либо в выражении DynamoDB, вам также потребуется использовать замену фактического значения с использованием заполнителя, поскольку типизированное значение DynamoDB является сложным объектом. [тысяча сто двадцать семь]

В следующем примере:

"expression": "myKey = :partitionKey",
"expressionValues": {
    ":partitionKey": {
        "S": "123"
    }
}

:partitionKey является заполнителем для комплексного значения

{
    "S": "123"
}

':' - это другой разделитель, который сообщает DynamoDB использовать [ 1111] карта при замене.

Почему expressionNames и expressionValues всегда используются при генерации кода?

Просто для логики генерации кода всегда проще использовать expressionNames и expressionValues, потому что нет необходимости иметь два кодовых пути для зарезервированных / незарезервированных слов DynamoDB. Использование expressionNames всегда предотвращает столкновения!

35
задан codeforester 30 March 2019 в 21:37
поделиться

4 ответа

Используйте встроенную команду compgen:

compgen -A variable | grep X
56
ответ дан Johannes Schaub - litb 27 November 2019 в 06:56
поделиться

Это должно сделать это:

env | grep ".*X.*"

Редактирование: извините, это ищет X в значении также. Эта версия только ищет X на имя var

env | awk -F "=" '{print $1}' | grep ".*X.*"

, Как Paul указывает в комментариях, если Вы ищете локальные переменные также, ENV должен быть заменен набором:

set | awk -F "=" '{print $1}' | grep ".*X.*"
10
ответ дан diciu 27 November 2019 в 06:56
поделиться

Самый легкий мог бы быть должен сделать

printenv |grep D.*=

, единственная разница - это, также распечатывает значения переменной.

2
ответ дан alxp 27 November 2019 в 06:56
поделиться
env | awk -F= '{if($1 ~ /X/) print $1}'
1
ответ дан dsm 27 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

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