SH 脚本字符串连接不起作用

SH script string concatenation not working

我有一个正在编写的 bash 脚本,它没有按预期连接字符串。我(在脚本中)在单个字符串中有一个预设的文件夹路径列表,由单个 space 分隔。这很好用,稍后在脚本中,我可以按预期循环遍历每个文件夹路径。

我试图让用户输入其他文件夹的可选列表,并添加到要检查的路径列表中。下面是我的代码和命令的输出:

#!/bin/sh
MOUNTPOINTS="/ /var /var/moodledata2"   #Set the mount points to check for

while getopts ":dh" opt; do
        case $opt in
                d)
                        DEBUG=true
                        ;;
                h)
                        echo USAGE: diskspace \[-d\] \[\/path1 ...\]
                        exit 0
                        ;;
                \?)
                        echo Incorrect syntax
                        ;;
        esac
        shift $((OPTIND - 1))
done

if [ "$#" -gt 0 ]; then
        for var in $@; do
                NEWMOUNTPOINTS .= $var
                echo "${MOUNTPOINTS} ${var}"
                echo "${NEWMOUNTPOINTS}"
        done
fi

运行命令时...

$ ./dt /home
./dt: 22: ./dt: NEWMOUNTPOINTS: not found
/ /var /var/moodledata2 /home

我最初尝试使用 MOUNTPOINTS .= ${var}MOUNTPOINTS .= "${var}",但它们仍然产生相同的错误。我以为我可以创建一个新变量,但这也不起作用(如上所示)。脚本的其余部分继续,但只有顶部的原始 MOUNTPOINTS;它永远不会改变,即使我使用上面的MOUNTPOINTS .= $var

如何获取使用提供的命令行参数创建的动态字符串?

要连接字符串,请执行:

            NEWMOUNTPOINTS+=" ${var}"

它当前执行名为 NEWMOUNTPOINTS 的 command/function 并向其传递 .= $var 个参数。

NEWMOUNTPOINTS="${NEWMOUNTPOINTS} ${var} "

这应该连接变量。