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} "
这应该连接变量。
我有一个正在编写的 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} "
这应该连接变量。