Условный оператор и присвоение Bash

То же как выше (если я понимаю право, что Вы хотите сделать, который является):

sed -e '/Y\{100\}/d'

Это соответствует всем строкам, содержащим 100 Y подряд, и удаляет их.

6
27.04.2014, 20:41
3 ответа
[115859] Это называется [116216] тернарным присваиванием [116217]. Вот еще один мой ответ:

Видите ли, как Вы говорите, это [116218]условное [116219] присваивание. Она зависит от условий. Синтаксис работает следующим образом:

Я не верю, что вы используете это правильно.

Из [116220]википедии[116221]:

apt-get install manpages-dev

?:[116539] используется следующее:

условие ? value_if_true : value_if_false

Условие вычисляется как булевское выражение true или false. На основе вычисления булева условия целое выражение возвращает значение_if_true, если условие истинно, но значение_if_false иначе. Обычно два подвыражения value_if_true и value_if_false должны иметь один и тот же тип, который определяет тип всего выражения. Важность такой проверки типа заключается в наиболее распространенном использовании оператора в условных операторах присваивания. При таком использовании в качестве выражения, расположенного справа от оператора присваивания, оно выглядит следующим образом:

dpkg-reconfigure ubuntu-desktop

переменная = условие ? value_if_true : value_if_false

Оператор [116544]?:[116545] аналогичен тому, как условные выражения ([116546]if-then-else[116547]) работают в функциональных языках программирования, таких как Scheme, ML, Haskell, так как if-then-else формирует выражение вместо оператора в этих языках.

  • Я думаю, что Ваша конкретная проблема связана с этим:
  • Так как в конструкции if-else вычисляется только одно из выражений 'x' и 'y'.
  • Если Вы прочитаете приведенную выше ссылку на выражения [116234]ternary[116235], то увидите, что оценка коротко замыкается, поэтому Ваше присваивание на стороне [116236]false[116237] ошибочно, так как [116238]1 = true[116239].

В любом случае, это не имеет большого значения, так как я не думаю, что это делает то, что Вы думаете. [115876]

2
27.01.2020, 20:27
[115246] Bash разбирает последнюю команду как[12172], что должно объяснить, почему она не работает. Вместо этого Вы должны использовать [12173]
4
27.01.2020, 20:27

Тернарные операторы возвращают значение на основе теста. Они не используются для разветвления.

Вот один из способов получить псевдотроичный оператор для bash (обратите внимание на обратные галочки):

$ result = `[] && echo" true-result "|| echo "ложный результат" `

$ a = $ c =` [$ a] && echo 1 || echo 0` $ echo $ c 0 $ a = 5 $ c = `[$ a] && echo 1 || echo 0` $ echo $ c 1

1
27.01.2020, 20:27

Теги

Похожие вопросы