LINUX.ORG.RU

Последний пробел в переменной как разделитель аргументов.

 


0

1

Есть некоторое количество переменных которые являются аргументами к комманде.

var1="arg1 "; var2=arg2\ ; var3="arg3 "
Сколько будет использоваться аргументов зависит от определенных условий.
command "$var1""$var2""$var3"
Почему конструкция такого вида не работает?
echo command "$var1""$var2""$var3" 
Показывает корректный вывод. Понимаю что можно убрать пробелы из переменнных и использовать конструкцию такого вида:
command "$var1" "$var2" "$var3"
На работе это особо не скажется, просто будут лишнее пробелы, но именно интересно почему конструкция показывающяя нормальный вывод через echo не работает.

var1="arg1 "; var2=arg2\ ; var3="arg3 "
var1=$(echo "$var1" | sed -e 's/^\s*//;s/\s*$//')
echo command "$var1""$var2""$var3" 
echo command "$var1" "$var2" "$var3"

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

Почему на заборе написано @#$, а за забором - стройка? «str1""str2» - это конкатенация строк.

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

router ★★★★★
()
Ответ на: комментарий от anonymous

в пределах "" не производится word splitting.

это конкатенация строк

Ясно.

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

eval command "$var1""$var2""$var3""$filename" не работает.

unclear
() автор топика

Почему не хочешь поместить аргументы в массив var, а потом выполнить command "${var[@]}"

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.