Использование переменной для ссылки на другую переменную в Bash

Относительно вашего первого вопроса. Все языки нуждаются в компиляторе, это правда, однако каждый язык имеет свой собственный другой способ компиляции. Например, Java использует JDK для компиляции и JVM для выполнения. Независимо от того, какой язык вы запрограммировали (как всегда, как язык высокого уровня), у вас будут средние слои, которые преобразуют ваш код в машинный код (aka двоичный код). Эти средние слои сделаны на языках среднего уровня (там есть их группа, вы можете прочитать их здесь http://en.wikipedia.org/wiki/Timeline_of_programming_languages ​​) и наиболее широко используются на сегодняшний день для программирования на низком уровне (еще не машинный код) является C.

Как и в первом ответе, были разные уровни языка программирования, но первое и самое важное, что вам нужно запомнить, это то, что компьютеры понимать двоичный код, который равен 1 или 0, а последовательность строк 1 и 0 вместе определяют, что делает программа.

До сих пор я надеюсь, что ответил на два из ваших вопросов. вам нужен новый язык программирования, в котором вам нужен компилятор, чтобы вы могли перевести свой код в машинный код. Все, что вы можете видеть сейчас, как некоторые ключевые слова с цветом и валидацией ошибок, прежде чем компилировать свой код, это IDES (вы можете прочитать о них здесь http://en.wikipedia.org/wiki/Integrated_development_environment ).

Например, если вы хотите, чтобы «кролик» был вашим ключевым словом в вашем коде, и вы также хотите, чтобы кролик использовался только после запятой, компилятор должен быть программой среднего уровня, которая определяет был ли он использован правильно или нет, прочитав ваш код.

Компилятор имеет разные этапы: вы должны иметь возможность читать свой код и определять, все ли зависимости (которые являются другими файлами, написанными в вашем коде) и текущие строки кода прекрасны. После этого вам нужно преобразовать своего «кролика» в то, что вы хотели бы, чтобы ваша программа выполняла каждый раз, когда вы его используете. В конце вы создадите файл, который может быть прочитан непосредственно машиной или другим вашим приложением, так как Java использует JVM.

Надеюсь, это даст вам немного света.

22
задан codeforester 24 January 2018 в 17:14
поделиться

3 ответа

См. Bash FAQ: Как я могу использовать переменные переменные (косвенные переменные, указатели, ссылки) или ассоциативные массивы?

Процитировать их пример:

realvariable=contents
ref=realvariable
echo "${!ref}"   # prints the contents of the real variable

Чтобы показать, как это полезно для вашего примера:

get_c() { local tmp; tmp="c$x"; printf %s "${!tmp}"; }
x=1
c1=string1
c2=string2
c3=string3
echo "$(get_c)"

Если, конечно, вы хотите сделать это правильно и просто используйте массив :

c=( "string1" "string2" "string3" )
x=1
echo "${c[$x]}"

Обратите внимание, что эти массивы имеют нулевой индекс, поэтому при x = 1 он печатает string2 ; если вам нужна строка1 , вам понадобится x = 0 .

33
ответ дан 28 November 2019 в 23:47
поделиться

если у вас есть bash 4.0, вы можете использовать ассоциативные массивы. . Или вы можете просто использовать массивы . Другой инструмент, который вы можете использовать, - это awk

, например

awk 'BEGIN{
  c[1]="string1"
  c[2]="string2"
  c[3]="string3"
  for(x=1;x<=3;x++){
    print c[x]
  }
}'
2
ответ дан 28 November 2019 в 23:47
поделиться

Попробуйте следующее:

eval echo \$c$x

Как говорили другие, в этом случае имеет смысл использовать массив.

2
ответ дан 28 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

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