如何在bash

时间:2018-02-21 13:29:12

标签: bash variables scope scripting

我正在实现一个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是否在函数内设置,如果未设置则再次提示?提前致谢

1 个答案:

答案 0 :(得分:0)

代码中的问题是测试$2$2是变量的名称,变量的内容。

您需要使用variable indirection ${!2}

capture_input() {
    (( $# < 2 )) && return 1
    while 
        IFS= read -rp "$1" "$2"
        [[ ! ${!2} ]]
    do
        echo "Invalid input!"
    done
}