Вы уверены, что echo
получает 2 параметра в echo $X
? Для меня он получает 3. Давайте попробуем:
X="'a b' 'c'"
function f(){ echo $#; echo $1; echo $2; echo $3; }
f $X
отображает:
3
'a
b'
'c'
3 параметра: 'a
, b'
и 'c'
. Я не думаю, что это то, что вы ожидаете.
Если вы хотите построить многопараметрическую переменную, установите IFS на символ, который вы не будете использовать (возможно, |
), и используйте его как разделитель параметров в вашей переменной:
X="a b|c"
IFS="|"
function f(){ echo $#; echo $1; echo $2; }
f $X