Можно использовать также это руководство для Windows 7 двойной загрузки и потомков Unix как FreeBSD.
Можно сократить его немного при помощи функции:
#!/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
.
Это можно сделать с помощью расширения параметра , используя${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
declare -g
. Это может быть переписано для не использования его все же. – jordanm 24.01.2014, 01:51