Bash: покажите подсказки, если аргументы не были обеспечены

Можно использовать также это руководство для Windows 7 двойной загрузки и потомков Unix как FreeBSD.

3
24.01.2014, 09:47
2 ответа

Можно сократить его немного при помощи функции:

#!/bin/bash

ask()
{
  declare -g $1="$2"
  if [ -z "${!1}" ]; then
    echo "$3"
    read $1
  fi
}

ask PROJECT_DIR "$1" "Directory where project resides:"
ask SITE_NAME   "$2" "Name of the website:"
ask ADMIN_PWD   "$3" "Admin password:"
ask THEME_DIR   "$4" "Directory of the theme:"
ask THEME_NAME  "$5" "Name of the theme:"

echo "$PROJECT_DIR $SITE_NAME"

Это требует bash хотя и не будет работать в sh.

3
27.01.2020, 21:23
  • 1
    Это на самом деле требует удара> 4.2 для declare -g. Это может быть переписано для не использования его все же. –  jordanm 24.01.2014, 01:51

Это можно сделать с помощью расширения параметра , используя${variable:-default}

Например:

function get_value_as_arg_or_prompt() {
  value=${1:-$(read -p "Enter: " x && echo "$x")}
  echo "$value"
}

Если привести аргумент:

$ get_value_as_arg_or_prompt "Hi there"
Hi there

Если не аргументировать:

$ get_value_as_arg_or_prompt
Enter: I'm here
I'm here
0
13.04.2020, 14:04

Теги

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