ФорумРазработкаУстановка и администрирование ПОИнтерпретаторы, компиляторы и т.д. → bash: аргументы командной строки и ковычечки

bash: аргументы командной строки и ковычечки

  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz Окт. 21, 2015, 4:24 п.п., спустя 15 минут 16 секунд

    @phpdude, окэй, возможно, что и не так. поэтому я и спрашиваю.

    Задача - в баш-скрипте что-то сделать и передать аргументы командной строки дальше в первозданном виде.

    Например, комит в гите:

    $ git ci -m "This is fucking commit"
    

    После прохода через $@ оно превращается в

    $ git ci -m This is fucking commit
    

    с закономерным

    error: pathspec 'is' did not match any file(s) known to git.
    error: pathspec 'fucking' did not match any file(s) known to git.
    error: pathspec 'commit' did not match any file(s) known to git.
    
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 21, 2015, 4:33 п.п., спустя 9 минут 9 секунд

    @vasa_c, блядь, так ты должен передавать не как $@, а "$@" С КАВЫЧКАМИ!!! У тебя и с кавычками не работает?

    Сапожник без сапог
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz Окт. 21, 2015, 5:17 п.п., спустя 43 минуты 52 секунды

    Окей, echo с кавычками выводит без кавычек, но в следующий процесс передаёт по ходу правильно.

    Все свободны, Дуд - молодец.

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 21, 2015, 5:21 п.п., спустя 4 минуты 5 секунд

    пиздец

    Спустя 104 сек.

    так блядь понятно что без кавычек, передаются параметрами при вызове процесса, там в принципе не бывает кавычег. там передается в таком же виде ['scriptname', $arg1, $arg2, $arg3 ...] на уровне ядра. Кавычки только промежуточный этап между вводом команды, ее парсингом в баше иа порождением процесса.

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!