저는 예상대로 문자열을 연결하지 않고 작성중인 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
을 사용하더라도 변경되지 않습니다.
제공되는 명령 줄 인수로 생성 된 동적 문자열을 얻으려면 어떻게해야합니까? 문자열을 연결하려면
** '**'루프가 실제로 예상대로 작동하고 있습니다. 루프가 끝난 후에 * 수행하고 싶다고 생각합니다. –