Bash неправильные пробелы, интерпретация кавычек в переменных

Я вижу странное поведение в сценариях оболочки, когда я передаю переменную с параметрами внешнему сценарию ruby Например:

params = "--val1=test --val2='test'"
ruby ./script.rb

заставляет Ruby выводить 'test' для var2 вместо test.

Если я просто передаю параметры напрямую, без использования переменной, все работает нормально.

Вы вообще не использовали переменную params. Измените свой вопрос, чтобы показать нам, чем вы действительно занимаетесь.

Socowi 25.10.2018 10:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
22
1

Ответы 1

Не могли бы вы немного уточнить свой вопрос?

Насколько я понимаю, у вас есть сценарий оболочки, например:

#!/bin/bash
PARAMS = "--val1=test --val2='test'"
ruby ./script.rb $PARAMS

А в script.rb вы распечатываете значение параметра командной строки val2. В этом случае ожидается, что он распечатает test вместо 'test', потому что выполняются следующие шаги:

  • bash заменяет $PARAMS его значением
  • bash пытается выполнить строку ruby ./script.rb --val1=test --val2='test'
  • теперь bash видит указанное значение 'test' и заменяет его на test, поэтому ruby / ваш скрипт видит test

Другие вопросы по теме