Использование: "$@"
если Вы хотите представить исходные аргументы (включая никакие аргументы) точно.
Существует 5 нотаций для упоминания:
$@
$*
"$@"
"$*"
${1+"$@"}
Первые два эквивалентны; оба разделяют слова в списке аргументов и передают их на вызываемую команду. Они редко - верный выбор.
Вторые два радикально отличаются. "$@"
нотация эффективно копирует аргументы оболочке (или набор аргументов через set
команда) к вызываемой команде, сохраняя количество аргументов, пробелов в них и разделения между ними. Если существуют нулевые аргументы, это ничего не генерирует.
"$*"
нотация вставляет все аргументы в единственную строку, помещая пространство между аргументами, но сохраняя пробелы в аргументах. Это подходит для использования в контекстах, таких как:
echo "You said, '$*'"
где предельная точность исходной командной строке не крайне важна.
Заключительная нотация, ${1+"$@"}
, похмелье с прошлых дней, с которыми можно столкнуться в старых сценариях оболочки. Когда-то давно (и давным-давно - как 30 лет назад), Оболочку Bourne рассматривают "$@"
как единственный пустой аргумент, когда не было никаких аргументов. Это не было поведением в течение долгого времени, но некоторые сценарии, записанные очень давно, могли бы все еще защитить себя при помощи этой нотации. ${1+X}
нотация означает 'если $1
установлен на что-либо, даже пустую строку, затем обеспечьте значение X
. В рассматриваемой нотации, X
"$@"
, который является списком аргументов, когда там, как известно, по крайней мере один - и иначе никакие аргументы. Что означает то же как "$@"
в любой современной оболочке.
Я понял это. Я просто добавил новый путь Java к началу моей переменной пути вместо конца, и это работало.
export PATH=/usr/local/testing/jdk1.6.0_23/bin:$PATH
Это работало. Теперь я собираюсь установить в своем сценарии, таким образом, он сделает автоматически.
Попытайтесь удалить /opt/j2sdk/bin
и /usr/local/testing/jdk1.6.0_23/bin
от Вашего PATH
.
Когда Вы работали alternatives --config
, это должно было измениться /usr/bin/java
указать на 1.6.0 версий.
Если Вы добавляете их к PATH
и используют alternatives
, у Вас будет два места для конфигурирования вещей, и это станет сбивающим с толку.
Для Centos 7 или RHEL 7 :Я столкнулся с этой проблемой при установке pycharm -community -2017.1.4 на RHEL 7.1. Ошибка была:
Unsupported Java Version: Cannot start under Java 1.7.0_75-mockbuild_2015_01_16_09_12-b00: Java 1.8 or later is required
Я обнаружил, что требуемая версия Java установлена, но не обнаружена. Затем я провел поиск в Интернете и использовал следующее для решения этой проблемы:
# alternatives --config java
выход:
Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/java-1.7.0-openjdk1.7.0.75-2.5.4.2.el7_0.x86_64 /jre/bin/java
2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
+ 3 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-2.b13.el7.x86_64/jre/bin/java
4 /usr/java/jdk1.8.0_91/jre/bin/java
Enter to keep the current selection[+], or type selection number:
Теперь введите номер нужной версии и нажмите клавишу ввода следующим образом:
Enter to keep the current selection[+], or type selection number:4
Проверить версию Java:
# java -version
Выход:
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)