gpt4 book ai didi

Bash 脚本错误地将\r 合并到变量中

转载 作者:行者123 更新时间:2023-12-02 20:45:17 26 4
gpt4 key购买 nike

我有一个在 docker 容器中构建的环境设置脚本。它需要一个键=值对的属性文件,然后通过并使用它们来创建一个环境。我遇到的问题是当我尝试 chown 用户(从属性中提取的值)时,它以“user\r”的形式出现,这会在 chown 上引发错误。

这是在我准备好的 docker 环境中执行的 - CentOS:7 base。从属性文件中提取用户 ID,在容器中创建为用户,并授予对轮组 (usermod -aG wheel $user) 的访问权限,因此他们在容器中具有权限。

我可以从这个特定的变量中去掉回车,但很好奇我如何能一起避免这个问题/我是如何导致它的,因为我觉得它可能会导致其他当前不可见的问题。

#!/bin/bash

dirname=$(dirname $0)
input_properties="input-properties"
...
while read -r line; do declare -x "$line"; done <${dirname}/${input_properties}
...
$SUDO mkdir -p $log
...
$SUDO chown -R $app_user: $log

其中 $app_user 和 $log 来自输入属性文件:
app_user=stackoverflow
log=/opt/program-root/logs

错误是
chown: invalid spec: 'stackoverflow\r:'

最佳答案

您的文件具有 Windows 样式的行尾。最简单的修复:

dos2unix ./${input_properties}

关于Bash 脚本错误地将\r 合并到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com