Относительно вашего первого вопроса. Все языки нуждаются в компиляторе, это правда, однако каждый язык имеет свой собственный другой способ компиляции. Например, 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.
Надеюсь, это даст вам немного света.
См. 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
.
если у вас есть bash 4.0, вы можете использовать ассоциативные массивы. . Или вы можете просто использовать массивы . Другой инструмент, который вы можете использовать, - это awk
, например
awk 'BEGIN{
c[1]="string1"
c[2]="string2"
c[3]="string3"
for(x=1;x<=3;x++){
print c[x]
}
}'
Попробуйте следующее:
eval echo \$c$x
Как говорили другие, в этом случае имеет смысл использовать массив.