如何正确识别/传递bash参数

时间:2019-03-11 22:18:32

标签: bash shell arguments

这个问题更多的是针对在bash函数中处理参数的最佳实践。让我们看一下以下代码:

#!/bin/bash

do_something () {
        echo "$1"
}

do_something_1 () {
        echo "$1"
}

do_something_2 () {
        echo "$1"
}


do_something_3 () {
        echo "$1"
}

echo "$1"
do_something
do_something "hi"
do_something_2 "hello"
do_something_3 "bye"

让我们想象一下我正在调用脚本:

./ myscript.sh param1

这将输出:

param1 #First parameter passed to the string
       #Nothing, as I am passing nothing to do_something
hi     #first parameter of do_something
hello  #first parameter of do_something_2
bye    #first parameter of do_something_3

但是,如果我看一下这些函数,所有这些函数都称为“ $ 1”。现在,我明白了这一点,但这似乎不可读。如果代码更大,该怎么办?我将需要转到函数的调用者以查看传递了什么参数(并忽略传递给脚本的参数),并且越来越难以知道/维护传递的参数中的内容。

2 个答案:

答案 0 :(得分:4)

对于较大的功能,我要做:

function myfunc() # source dest [options]
{
    local source="$1"
    local dest="$2"
    local options="$3"
    # Now i have named local variables
    ....
}

答案 1 :(得分:-1)

您可以尝试:

do_something "$1"

或者,如果您愿意的话,可以使用 php 这样的语言编程程序