我正在实现一个bash
shell脚本,它接受用户输入(通过read
)到几个变量并执行一些任务。以下是示例代码段
#!/usr/bin/env bash
function1(){
read -p 'Enter Input2: ' variable2
#more lines
captureUserInput 'Enter Inputx: ' varibleNameAsAString
echo "After setting up $varibleNameAsAString"
}
read -p 'Enter Input1: ' variable1
captureUserInput(){
read -p "$1" $2
while [ -z "$2" ]
do
echo "Invalid Inputs"
read -p "$1" $2
done
}
function1
如何检查传递给varibleNameAsAString
函数的变量captureUserInput
是否在函数内设置,如果未设置则再次提示?提前致谢
答案 0 :(得分:0)
代码中的问题是测试$2
。 $2
是变量的名称,不变量的内容。
您需要使用variable indirection ${!2}
:
capture_input() {
(( $# < 2 )) && return 1
while
IFS= read -rp "$1" "$2"
[[ ! ${!2} ]]
do
echo "Invalid input!"
done
}