$*
) переданный script
кому: program
такжеПример кода
interested_parameter_names=(-in -out)
default_parameter_values=(file.in file.out)
program=echo
cmd="$program $*"
for ((index=0; index<${#interested_parameter_names[*]}; index++))
do
param="${interested_parameter_names[$index]}"
default_value="${default_parameter_values[$index]}"
if [ "${*#*$param}" == "$*" ] # if $* not contains $param
then
cmd="$cmd $param $default_value"
fi
done
echo "command line will be:"
echo "$cmd"
echo
echo "execute result:"
$cmd
Можно легко добавить, что больше параметров/значений по умолчанию включает больше элемента массива $interested_parameter_names
и $default_parameter_values
Демонстрационный вывод
$ ./wrapper.sh -in non-default.txt -other-params
command line will be:
echo -in non-default.txt -other-params -out file.out
execute result:
-in non-default.txt -other-params -out file.out
Примечание:
Когда передающие параметры, который содержит пространство, им нужно оставить \
, не просто заключил им в кавычки. Пример:
./script -in new\ document.txt
Кажется, что вам нужно добавить
/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/jli
в /etc/ld.so.conf, или, скорее всего, к новому файлу в /etc/ld.so.conf.d. Затем запустите ldconfig
, чтобы обновить кэш и ldd
найдет эту библиотеку.
Для написания скриптов chroots, вам, вероятно, будет не так больно в долгосрочной перспективе использовать пакетный подход, сначала создав базовую установку (используя, например, debootstrap на хостах, основанных на Debian), а затем установив нужные вам пакеты. Это позволит менеджеру пакетов позаботиться обо всей работе по разрешению зависимостей, установке всех необходимых файлов и выполнению задач после установки.
Предполагается, что это сработает нестандартно - не связываясь ни с /etc/ld.so.conf*, ни с ldconfig - и это легко сделать. Просто смонтируйте /proc в вашем chroot. Я делаю это со следующей строкой в /etc/fstab в моем real-root fs:
/proc /var/chroot/ia32/proc none bind
Таким образом, привязывая его к реальному /proc.
Per https://github.com/cedric-vincent/PRoot/issues/9, ld-linux.so (наверное) определяет $ORIGIN для подстановки в записи objdump -p's RPATH, глядя на /proc/self/exe.
Сколько раз я был укушен этим и должен был заново открыть его? Пожалуйста, о могучий и мудрый Google, приведите меня сюда быстро в следующий раз, так что будущее - я могу учиться снова на коленях в прошлом!