Уменьшите выход с bash - PullRequest
       18

Уменьшите выход с bash

0 голосов
/ 22 апреля 2020

Я пытаюсь запустить основную c bash программу с двумя выходами, программа работает и тесты проходят. Дело в том, что я хочу уменьшить вывод только одним «эхо», когда есть вход, показать «Один» для «ввода», а когда пусто, «Один для вас». Это работает, но я хочу, чтобы результат был в одной строке.


if (($# == 0)) 
then
    echo "One for you, one for me."
else
   echo "One for $1, one for me."
fi

Ответы [ 2 ]

1 голос
/ 22 апреля 2020
echo "One for ${1:-you}, one for me."

Если $1 равно нулю или не установлено, поместите туда you.

Для справки см. bash расширение параметров оболочки вручную .

В качестве альтернативы, если у вас нулевые аргументы, вы можете установить значения по умолчанию.

if (($# == 0)); then
    set -- you
fi
echo "One for $1, one for me."

, что эквивалентно, поскольку он будет обрабатывать пустой аргумент $1="" по-другому.

0 голосов
/ 22 апреля 2020

Если вам нужен более короткий код, это может помочь:

other="you"; [[ $# -ne 0 ]] && other="$1"
echo "One for ${other}, one for me."

В первой строке по умолчанию для переменной other указано значение you, а затем она перезаписывается, если вы указали имя. Вторая строка просто распечатывает его для вас.

Это не поможет, если пользователь введет пустое имя (как при script.sh ""), поэтому вместо этого вы можете захотеть просто проверить саму переменную, а не счетчик :

other="you"; [[ -n "$1" ]] && other="$1"
echo "One for ${other}, one for me."
...