【问题标题】:Read key value pairs from .txt file and use in shell script [duplicate]从 .txt 文件中读取键值对并在 shell 脚本中使用 [重复]
【发布时间】:2017-12-26 18:59:34
【问题描述】:

感谢您调查我的问题。

我有一个包含键值对的文本文件。像 version.txt 并且内容是版本=1.0.0.AA

现在我想阅读这个文本文件,在我的脚本中使用这个版本号。

我正在使用以下脚本在 Windows 中处理此问题:

For /F "tokens=1* delims==" %%A IN (..\version.txt) DO (
    IF /I "%%A"=="version" set APP_VERSION=%%B
)
echo Application Version is "%APP_VERSION%"

您能帮我在 Shell 脚本中实现同样的功能吗?

谢谢。

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    你可以这样做

    source version.txt
    echo ${Version}
    

    对于版本.txt

    Version=1.0.0SomeVersion
    

    source [file] 将 [file] 的内容输入到脚本中

    Version=1.0.0ABC 恰好是 bash 中的有效变量声明

    (提示:等号、变量名和值之间不能有空格)

    (提示:bash 中的变量区分大小写)

    因此,您可以只获取键值文件并将其内容用作变量。

    如果要检查变量是否未设置或为空,可以使用

    if [ -z "$Version" ]; then
        echo "Version is unset or empty!"
        exit 1
    fi
    

    【讨论】:

    • 我已经尝试过了。我看到一些奇怪的问题。 ../version.txt:第 1 行:$'\r':找不到命令
    • 那是因为你使用的文件的行尾是windows。执行dos2unix version.txt 将您的文件转换为 linux 文件 endig。
    • 非常感谢。你是对的,它有 EOL 字符。
    • 注意:source 不是 POSIX,因此您可能对其他 shell 有可移植性问题。等效的 '.' 运算符是。只需. version.txt 就可以保证工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多