Можно ли использовать функцию в $ ((func arg? Str1: str2))? - PullRequest
3 голосов
/ 08 июня 2011

Я бы хотел использовать такое утверждение:

var=$(( func arg ? str1 : str2 ))

но bash выдает синтаксическое сообщение об ошибке:

syntax error in expression (error token is "arg")

Я играл с различными формами, но не могу понять, как заставить его принимать функцию с аргументом. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 июня 2011
echo $(( $(seq 1) + 1 ))
2

Вам нужно использовать тот же синтаксис, который ожидает bash в других местах. Насколько условно? iftrue: iffalse синтаксис, я не думаю, что вы можете сделать это в bash. Вместо этого вы можете сделать что-то вроде:

echo $(( 1 + $(true && echo 1 || echo 0) ))
2
1 голос
/ 13 июня 2011

Я думаю, что правильный ответ состоит в том, что нет никакого способа использовать утверждение, о котором я спрашивал.Проблема в том, что этот условный оператор может вычислять только целое число, а не строку, как я хотел.

jm666 ответил на вопрос в комментарии к ответу Стива, поэтому я поставил ему голос "против".

...