访问函数内的Shell参数

时间:2014-04-02 12:40:47

标签: bash shell

所以我正在玩一个简单的bash程序,只是为了学习shell和bash的基础知识。这个想法是一个小密码生成器,可以将密码保存到.txt文件中。 请记住,这只是学习shell脚本的东西 - 当然我理解前提是不安全的:)

例如,我希望能够写

./script.sh facebook generate

哪个会生成一个简单的字符串然后如果我确认 - 将密码和站点名称保存到.text文件中。

无论如何,我遇到的问题是 - 我无法检索我在回显文本到txt文件的行上的$ 1和$ 2参数(见下文)。我已经对我无法开展的工作发表评论。我只是在.txt文件中得到空白。

无论如何可以帮助并提供一些有关访问函数内部参数的指导吗?

function generate() {
    PASS="9sahdoasndkasnda89zls"
    echo $PASS
}

function storeConfirm() {
    /bin/echo -n "Do you want to store this password? Y/N "
    read answer
       if [ "$answer" == "Y" ]
           then
               echo "--------" >> pwstore.txt;
               echo $1 "=" $2 >> pwstore.txt; #This line doesn't work, can't seem to access the $1 and $2 params
               echo "Successfully stored for you"
           else 
                echo "Ok... have it your way"
       fi
}

if [[ $2 == "generate" ]]; then
    generate
    echo "for site=" $1
    storeConfirm
fi

1 个答案:

答案 0 :(得分:4)

由于您可以将参数传递给函数的方式与将参数传递给脚本的方式相同,因此您必须确保脚本参数得到转发"到功能。换句话说 - 函数有自己的"参数范围"。一个例子:

$ cat script
#!/usr/bin/env bash

_aFunction(){
    echo "Parameter 1: ${1}"
    echo "Parameter 2: ${2}"
}

_aFunction
_aFunction "$1" "$2"
_aFunction One Two

$ ./script 1 2
Parameter 1:
Parameter 2:
Parameter 1: 1
Parameter 2: 2
Parameter 1: One
Parameter 2: Two