我有一个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
。
如何使用提供的命令行参数创建动态字符串?
答案 0 :(得分:1)
要连接字符串,请执行:
NEWMOUNTPOINTS+=" ${var}"
它当前执行一个名为NEWMOUNTPOINTS
的命令/函数,并将.= $var
个参数传递给它。
答案 1 :(得分:1)
NEWMOUNTPOINTS="${NEWMOUNTPOINTS} ${var} "
这应该连接变量。