Запуск игр с помощью Steam Proton не учитывает вашу текущую раскладку клавиатуры

read -p "$1:" tmp1 и read -p "$2:" tmp2считывают по строке ввода от пользователя каждый, используя первый($1)и второй($2)аргументы функции в качестве подсказок. Результаты сохраняются в tmp1и tmp2. Затем, если они равны, значение из tmp1считывается в переменную, названную первым аргументом функции сread "$1" <<< "$tmp1"

Итак, то, что вы получите с помощью read_and_verify domain "Please enter the domain of your web application twice", выглядит примерно так, а введенные пользователем данные выделены курсивом:

domain:foo
Please enter the domain of your web application twice:foo

Затем введенное значение сохраняется в переменной domain; работает echo "$domain"после того, как выше показано foo.

I misunderstand why is the $1 and $2 needed and henceforth why is the read "$1" <<< "$tmp1" needed.

$1и $2используются в качестве подсказок пользователю, а $1— это , также используется для передачи имени результирующей переменной в функцию. Это делает первую подсказку немного странной. Возможно, лучше использовать что-то более описательное, например.:

read -p "Please enter value for '$1': " tmp1
read -p "Please repeat the value to verify: " tmp2

Или использовать сообщение, переданное в $2, для обоих подсказок, как это делает ответ на ваш другой вопрос .

read "$1" <<< "$tmp1"также несколько странен, поскольку обычно вы можете просто присвоить значение одной переменной другой. Однако здесь проблема в том, что $1содержит имя переменной, поэтому нам нужно косвенное присвоение. В Bash 4.3 и более поздних версиях мы могли бы использовать для этого ссылку на имя :

.

declare -n ref="$1"
ref=$tmp1

Таким образом, всю функцию лучше написать так:

#!/bin/bash
function read_and_verify  {
    read -p "Please enter value for '$1': " tmp1
    read -p "Please repeat the value to verify: " tmp2
    if [ "$tmp1" != "$tmp2" ]; then
        echo "Values unmatched. Please try again."; return 2
    else
        declare -n ref="$1"
        ref=$tmp1
    fi
}

(обратите внимание, что здесь не используется второй аргумент.)

2
25.06.2020, 18:00
1 ответ

Если вы используете GNOME в качестве DE, где-то в настройках языка есть параметр (не могу вспомнить, где ), но если вы наткнетесь на поле выбора, где значение равно IBus, измените значение на None, и вы должны быть готовы к изменению раскладки клавиатуры

Я наткнулся здесь, когда искал решение той же проблемы с XFCE

0
28.04.2021, 23:12

Теги

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