Котировка в ошибке аргументов функции

StackOverflow https://stackoverflow.com/questions/7354454

  •  28-10-2019
  •  | 
  •  

Вопрос

Как следует исправить command переменная, чтобы получить правильное поведение?

#!/bin/bash

function f ( )
{
    echo "$2"
}
command="f --option=\"One Two Three\" --another_option=\"Four Five Six\""
$command

f --option="One Two Three" --another_option="Four Five Six"

Первое звонок неправильно, второе - верно

$> ./test.sh 
Two
--another_option=Four Five Six
Это было полезно?

Решение

Запись FAQ BASH № 50: «Я пытаюсь поместить команду в переменную, но сложные случаи всегда терпят неудачу!»

TL; DR: Используйте массив.

command=(f --option="One Two Three" --another_option="Four Five Six")
"${command[@]}"

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

Вы не можете исправить переменную. Но ты можешь:

eval $command
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top