Если вы хотите просто передать значения массива в функцию, вы можете сделать это:
test_arr() {
for i in "$@"; do
echo $i
printf '\n'
done
:
}
arr=("lol 1" "lol 2" "lol 3")
test_arr "${arr[@]}"
"${arr[@]}"
передаст все значения, правильно разграниченные функции, где мы можем получить к ним доступ через [ 113] (все аргументы).
!
, о котором вы спрашивали, используется для косвенной ссылки. То есть "${!1}"
- это не значение первого аргумента, а значение переменной, имя которой равно значению первого аргумента.
Я мог бы что-то пропустить, но, похоже, желание объединить косвенное обращение и получить доступ ко всем элементам массива с косвенными ссылками в одно и то же время потребовало бы слишком много от оболочки, так что я вызвал могучего eval
(хорошая причина, чтобы начать быть осторожным), чтобы помочь нам немного. Я взломал это, что позволяет вам передавать имя массива в функцию, а затем получать доступ к его элементам на основе этого имени, как видно в первом аргументе функции, но это не красиво, и одного этого должно быть достаточно, чтобы разочаровывать Это. В качестве примера он создает локальную переменную / массив, предполагая, что для этого была какая-то причина.
test_arr() {
local a
eval a=(\"\$\{$1\[@\]\}\")
for i in "${a[@]}"; do
echo $i
done
}
arr=("lol 1" "lol 2" "lol 3")
test_arr arr
Я сделал следующие настройки для JDE:
'(jde-bug-debugger-host-address "127.0.0.1")
'(jde-bug-jre-home "/usr/lib/jvm/java-6-sun")
'(jde-compile-option-debug (quote ("all" (t nil nil))))
'(jde-debugger (quote ("jdb")))
'(jde-global-classpath (quote ("." "/usr/share/java/" "/usr/lib/jvm/java-6-sun/")))
'(jde-jdk-doc-url "/usr/share/doc/sun-java6-jdk/html/api/index.html")
'(jde-jdk-registry (quote (("1.5" . "/usr/lib/jvm/java-6-sun"))))
'(jde-regexp-jar-file "/usr/share/java/regexp.jar")
'(jde-sourcepath (quote (".")))
Таким образом, это компилирует без жалоб, хотя у меня есть jdk 1.6.0.07.
Да, я сделал это. Проблема состоит в том, когда я называю 'jde-компиляцию, сообщение 'JDE не распознает JDK6.0.10 JDK. Принять JDK 1.5 Javac?" появляется. Кроме того, не похоже, что конструкции Java6, такие как аннотации, были определены в правилах проверки или добавления отступа синтаксиса.
Можно установить пути в параметрах конфигурации путем "регистрации" использования версии JDK M-x customize-variable
и выбор jde-jdk-registry
. Сохраните то состояние, затем сделайте M-x customize-variable
снова, настроить jde-jdk
и выберите тот, который Вы хотите.
Это должно сделать это; в противном случае дайте нам немного более подробной информации.