如何在bash脚本中传递两个参数或参数[重复]

Posted

技术标签:

【中文标题】如何在bash脚本中传递两个参数或参数[重复]【英文标题】:How to pass two parameters or arguments in bash scripting [duplicate] 【发布时间】:2014-10-09 01:20:34 【问题描述】:

我是 bash 脚本的新手,我需要您的支持来解决这个问题。我有一个 bash 脚本“start.sh”。我想编写一个带有两个参数的脚本,以便我可以按以下方式运行脚本

./start.sh -dayoffset 1 -processMode true

dayoffset 和 processMode 是我必须编写脚本的两个参数。

dayoffset = 1 是报告日期(今天) processMode = true or false

【问题讨论】:

【参考方案1】:

首先你可以这样做:

#!/bin/bash
dayoffset=$1
processMode=$2
echo "Do something with $dayoffset and $processMode."

用法:

./start.sh 1 true

另一个:

#!/bin/bash

while [[ $# -gt 0 ]]; do
    case "$1" in
    -dayoffset)
        day_offset=$2
        shift
        ;;
    -processMode)
        if [[ $2 != true && $2 != false ]]; then
            echo "Option argument to '-processMode' can only be 'true' or 'false'."
            exit 1
        fi
        process_mode=$2
        shift
        ;;
    *)
        echo "Invalid argument: $1"
        exit 1
    esac
    shift
done

echo "Do something with $day_offset and $process_mode."

用法:

./start.sh -dayoffset 1 -processMode true

使用日期偏移量解析示例参数:

#!/bin/bash 
dayoffset=$1
date -d "now + $dayoffset days"

测试:

$ bash script.sh 0
Fri Aug 15 09:44:42 UTC 2014
$ bash script.sh 5
Wed Aug 20 09:44:43 UTC 2014

【讨论】:

您好,感谢您的回复。我的剧本或多或少是这样的。有没有意义。 code if [ $# -eq 3 ];那么如果 [ -z "$1" ];然后 DAY_OFFSET="-1" else DAY_OFFSET="$1" fi if [ -n "$2" ] && [ $2 = "repeat" ];然后 echo "Wiederholungslauf" PARAMETERS="$PARAMETERS -processMode true" else echo "Default" PARAMETERS="$PARAMETERS -processMode false" fi else echo "错误数量的参数给定" batch_exit fi code 非常感谢。它对我有用:) @user1983063 您的版本不太动态。我建议你使用我给出的一般形式。我实际上更喜欢全大写的变量名,所以您可以将这些变量更改为全大写形式。请小心使用内置 shell 变量....不客气:)

以上是关于如何在bash脚本中传递两个参数或参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Bash脚本不处理传递的输入参数[重复]

Bash参数解析逻辑陷入无限循环[重复]

从 bash 或 perl 脚本中读取 CSV [重复]

如何找到传递给 Bash 脚本的参数数量?

如何将带有管道符号的多个参数传递到bash脚本案例语句中

如何在 Bash 参数中保留引号? [复制]