Go Back   За UNIX и Linux Форуми > Топ форуми > Shell Програмиране и скриптове
.
Google Site



Shell Програмиране и скриптове Пост въпроси за KSH, CSH, SH, Bash, Perl, PHP, SED, AWK И ДРУГИ черупки скриптове и черупки скриптови езици тук.

Closed Thread
English Japanese Spanish French German Portuguese Italian Осъществено от Powered by Google
 
Нишка Инструменти Търсене в тази нишка Оцени резба Покажи Режими
  #1 (Permalink)  
Old 12-18-2007
Регистрирани потребители
 

Присъедини Дата: Dec 2007
Мнения: 30
Проблемът с аргумента пространства и анализирането на

[Подготовка: дискусията по-долу ще се отнася за Java клас име HelloWorld. Неговата напълно неподходящи за тази командироването какво прави този клас, тъй като на проблем, който аз се опише трябва да правите с черупка, а не Java. Нейната само, че проблемът възниква заради мен, докато правиш някои кодиране, и не можех да мисля за една по-универсална илюстрация.

Въпреки това, ако имате нужда от нещо конкретно, за да се дублира действията ми, тогава източник файл HelloWorld.java, че аз бях съдържащи текста

Код:
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Welcome, master");
	}
}

и аз използва
javac HelloWorld.java
]



Да предположим, че изпълнява следната команда директно от черупката:
Java-XX: OnError \u003d "gdb -% Р" HelloWorld
Тогава то работилница съвършено глоба, както очаквах.

Сега, предполагам, че създам следния скрипт черупки:

Код:
#!/bin/sh
echo java  -XX:OnError=\"gdb - %p\"  HelloWorld
java  -XX:OnError=\"gdb - %p\"  HelloWorld

Резултатът сега е:
Java-XX: OnError \u003d "gdb -% Р" HelloWorld
Неразпознати опция: --
Не може да се създаде Java виртуална машина.
Добре, на ехо линия изходи точно това, което бе преди изпълнени директно от черупката, но сценария опита да изпълни тя отказва. В съобщението за грешка, че загатки
"gdb -% P"
всъщност се тълкува като 3 различни думи за някои странни причина, а именно
"gdb
--
% P "
Всъщност, мисля, че мога да потвърдя това чрез модификация на скрипт за да се

Код:
#!/bin/sh
echo java  -XX:OnError=\"gdb - %p\"  HelloWorld
set -x
java  -XX:OnError=\"gdb - %p\"  HelloWorld
set +x

които изходи
Java-XX: OnError \u003d "gdb -% Р" HelloWorld
Java + '-XX: OnError \u003d "gdb" - "% Р" HelloWorld
Неразпознати опция: --
Не може да се създаде Java виртуална машина.
+ Настройка + X
Забележете как набор-X поставя първата двойка единични кавички около просто
-XX: OnError \u003d "gdb
и след това на следващата двойка около
% P "
Значи това, което е черупката скрипт правиш в своята интерпретация на текста, че черупката командния ред, не прави това причинява това на неуспех?

Аз предполагам, че черупката скриптове не са точно като спаси командния ред сесии в края на краищата?

Може ли да заобиколите това, като използва някакъв вид octal избягат или нещо за пространства вътре "gdb -% P"?
Спонсорирани Връзки
  #2 (Permalink)  
Old 12-18-2007
Регистрирани потребители
 

Присъедини Дата: Jan 2007
Мнения: 2965
Цитат:
Първоначално Публикувано от fabulous2 View Post
Значи това, което е черупката скрипт правиш в своята интерпретация на текста, че черупката командния ред, не прави това причинява това на неуспех?
Черупката се интерпретират


Код:
java  -XX:OnError=\"gdb - %p\"  HelloWorld

по следния списък с аргументи ....

0: Java
1:-X: OnError \u003d "gdb
2: --
3:% P "
4: HelloWorld

Въпросът е ти какво всъщност искат-XX: OnError да бъде?
  #3 (Permalink)  
Old 12-18-2007
Регистрирани потребители
 

Присъедини Дата: Dec 2007
Мнения: 30
Цитат:
Първоначално Публикувано от портер View Post
Въпросът е ти какво всъщност искат-XX: OnError да бъде?
Съжалявам, ако моите inital psot е неясно. Искам
-XX: OnError \u003d "gdb -% P"
да се тълкува като един аргумент, а не като 3 отделни аргументи, както е в момента се случва.

Аз трябваше да спомена, че аз се опитах познае и пускането единични и двойни кавичките около него, всички, за да не се ползват. Това е много разочароващо аспект от SH файлове в сравнение с конвенционалните езици като Java, има толкова много gotchas, че се чувстваш като теб се стои на плаващ пясък понякога.
  #4 (Permalink)  
Old 12-18-2007
Регистрирани потребители
 

Присъедини Дата: Jan 2007
Мнения: 2965
Цитат:
Първоначално Публикувано от fabulous2 View Post
Искам
-XX: OnError \u003d "gdb -% P"
Опитайте бягство пространствата, които искате да се игнорира черупката ....


Код:
-XX:OnError=\"gdb\ -\ %p\"

или цитирате ...


Код:
-XX:OnError="\"gdb - %p\""

  #5 (Permalink)  
Old 12-19-2007
Регистрирани потребители
 

Присъедини Дата: Dec 2007
Мнения: 30
Цитат:
Първоначално Публикувано от портер View Post
Опитайте бягство пространствата, които искате да се игнорира черупката ....


Код:
-XX:OnError=\"gdb\ -\ %p\"

или цитирате ...


Код:
-XX:OnError="\"gdb - %p\""

Дали това наистина избягат пространствата? Мислех, че е работил за обратно наклонена черта само някои последващи символи (напр. друг \, или N и др.)

Независимо, аз се опитах го и той не работи.

Аз също да се опита с помощта на octal код \ 040, вместо на пространството и командния сега изпълнява, но я използва буквално символа "\ 040", така че, ако някога Java грешка настъпили след което го няма в този момент.

Имах преди това опитах кавички като това, което предлагаме, и в двете единични и двойни цитат версии, и двамата не успеят за мен.
  #6 (Permalink)  
Old 12-19-2007
Регистрирани потребители
 

Присъедини Дата: Jan 2007
Мнения: 2965
В \ бягство работи за мен Solaris 9

С програмата компилира като a.out


Код:
#include <stdio.h>

int main(int argc,char **argv)
{
        int i=0;
        while (i < argc) { printf("argv[%d]=%s\n",i,argv[i]); i++; }

        return 0;
}

скрипт ...


Код:
#!/bin/sh

./a.out java "-XX:OnError=\"gdb - %p\"" HelloWorld

продукция


Код:
argv[0]=./a.out
argv[1]=java
argv[2]=-XX:OnError="gdb - %p"
argv[3]=HelloWorld

По същия начин ...


Код:
#!/bin/sh -x

./a.out java -XX:OnError=\"gdb\ -\ %p\" HelloWorld

дава


Код:
argv[0]=./a.out
argv[1]=java
argv[2]=-XX:OnError="gdb - %p"
argv[3]=HelloWorld

  #7 (Permalink)  
Old 12-19-2007
Регистрирани потребители
 

Присъедини Дата: Dec 2007
Мнения: 30
Може би това е вариант на Unix проблем.

На cygwin, когато се използват

Код:
\"gdb\ -\ %p\"

Виждам едно пространство ( "") в ехо на изхода. Но Java команда не успее, защото сценария е все още по-горе тълкуване на линия като 3 отделни аргументи, вместо на един, така че Java командване смята, че тя е обект на менте избор на име "-".

На Linux (2.6.9-022stab070.9-предприятие), за ехо продукция отново е правилна, но като цяло не успее команда се дължи на различни грешка. Хм ...
Спонсорирани Връзки
Closed Thread

Маркери

Tags
Linux

Нишка Инструменти Търсене в тази нишка
Търсене в тази нишка:

Разширено търсене
Покажи Режими Оцени тази тема
Оцени тази тема:

Правила за публикуване
Ти не може да публикувате нови конци
Ти не може да публикувате отговори
Ти не може да публикувате прикачени файлове
Ти не може да редактирате вашите мнения

BB код е На
Усмивки са На
[IMG] код На
HTML код е Отдалечаване
Trackbacks са На
Pingbacks са На
Refbacks са Отдалечаване


Още UNIX и Linux Форум Теми Можете да намерим Полезни
Нишка Нишка Начално Форум Отговори Последно мнение
Проблем при преминаване аргумент на черупката скрипт sumesh.abraham Shell Програмиране и скриптове 9 12-13-2006 12:07 ч.
Проблем с Аргументът Минавайки A_Rod Shell Програмиране и скриптове 4 09-13-2006 12:47 ч.
аргумент синтактичния анализ на ... midhun_u Shell Програмиране и скриптове 1 07-25-2006 11:38 AM
командния ред аргумент анализирането rmjoe UNIX за манекени Въпроси & Отговори 1 07-28-2005 04:39 ч.
черупка скрипт аргумент анализирането rmjoe Shell Програмиране и скриптове 1 07-28-2005 04:37 ч.



Всички времена са GMT -4. В момента е: 06:40 ч..


Осъществено от: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Езикови преводи Осъществено от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
За UNIX и Linux Форуми Content Copyright © 1993-2010. Всички права Reserved.Ad Управление чрез RedTyger

Съдържание съответно с URL адреси vBSEO 3.2.0