Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » BASH Как правильно передать параметр к кавычках?

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

SPG_Stan

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть некая программа которая имеют ф-ю main и стандартным образом считывает параметры. Возникала проблема с "программной" передачей ей текстового параметра в кавычках "". Чтобы разобраться, что на самом деле происходит написал скрипт корому передаю параметры, а он собирает их в один вида "парам1 парам2 парам3". В скрипте делаю вывод в файл смотрю как он собирает парметры. Если запускать:  
скрипт парам1 парам2 парам3
внутри скрипта:
программа "парам1 парам2 парам3"
 
Программа говорит что я ей передал 3 параметра, если написать то же в консоли руками то все нормально.

Всего записей: 76 | Зарегистр. 18-10-2004 | Отправлено: 13:50 28-08-2009 | Исправлено: SPG_Stan, 13:53 28-08-2009
keyhell



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ничего не понял. Вы про экранирование кавычек?

Цитата:
# cat a.sh
./b.sh \"1\" \"2\"
 
# cat b.sh
echo $*
 
# ./a.sh
"1" "2"
 


Всего записей: 1395 | Зарегистр. 10-08-2003 | Отправлено: 16:34 28-08-2009
albel



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SPG_Stan
всё зависит от того, как вы вызываете программу из скрипта и каким образом передаёте скрипту данные.
Что мешает внутри скрипта передавать параметры уже в кавычках?
p.s. Сохранить кавычки в параметрах можно, заключив аргументы, передаваемые скрипту, в одинарные кавычки.
Примерно так:

Код:
 
bash test.sh '"testarg1"' '"testarg2'"
 

В принципе, вот скрипт, выводящий на печать все передаваемые ему аргументы - можно поиграться с параметрами и наглядно увидеть, что и как разбивается:

Код:
 
#!/bin/bash
##
 
echo "Testing quotes in command line arguments"
J=0
for I in $*; do
    J=`expr $J + 1`
    echo "Argument "$J"="$I
done
 

Всего записей: 11003 | Зарегистр. 30-08-2002 | Отправлено: 16:36 28-08-2009 | Исправлено: albel, 16:36 28-08-2009
SPG_Stan

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
я вывожу в файл передаваемые аргументы
 
в файле написано
программа "парам1 парам2 парам3"
 
т.е. вроде все правильно
 
Программа говорит что я ей передал 3 параметра, почему он не интерпритируется как один?

Всего записей: 76 | Зарегистр. 18-10-2004 | Отправлено: 16:57 28-08-2009 | Исправлено: SPG_Stan, 17:02 28-08-2009
albel



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SPG_Stan
"имя, сестра, имя" (c)
Пример, приведите пример. Ну вот совершенно неясно, о чём идёт речь.
Вам нужно передать в программу 1 параметр, а не 3?
Вызывайте программу из скрипта командой ./prog "arg1 arg2 arg3"
И - вам же подсказали - экранируйте кавычки

Код:
J=0
P=""
for I in $*; do
    J=`expr $J + 1`
    echo "Argument "$J"="$I
    P=`echo $P $I`
done
P=`echo "\"$P\""`
echo $P
 


----------
Я никогда не спорю. Я никогда не противоречу. Я иногда забываю. / © Б.Дизраэли/

Всего записей: 11003 | Зарегистр. 30-08-2002 | Отправлено: 20:56 28-08-2009
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » BASH Как правильно передать параметр к кавычках?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru