我有一個bash腳本,我正在寫這不是按預期連接字符串。我有(在腳本中)單個字符串中的文件夾路徑的預設列表,由單個空格分隔。這很好,稍後在腳本中,我可以像預期的那樣遍歷每個文件夾路徑。SH腳本字符串連接不起作用
我想讓用戶輸入一個可選的其他文件夾列表,並添加到路徑列表來檢查。下面是我的代碼,命令的輸出:
#!/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 [email protected]; 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
,以上。
我能做些什麼來獲得使用提供的命令行參數創建的動態字符串?
我不確定在** while循環實際上是否按照您期望的方式工作。我認爲你想在循環結束後這樣做。 –