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

时间:2015-01-06 22:58:33

标签: sh

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

我正在尝试允许用户输入其他文件夹的可选列表,并添加到要检查的路径列表中。下面是我的代码,以及命令的输出:

#!/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

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

2 个答案:

答案 0 :(得分:1)

要连接字符串,请执行:

            NEWMOUNTPOINTS+=" ${var}"

它当前执行一个名为NEWMOUNTPOINTS的命令/函数,并将.= $var个参数传递给它。

答案 1 :(得分:1)

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

这应该连接变量。