쉘 스크립트에서 마운트에 실패했습니다.

쉘 스크립트에서 마운트에 실패했습니다.

매우 간단한 쉘 스크립트를 만들었습니다.

#!/bin/bash
/usr/bin/mount -v --bind "\""$1"\"" "\""$2"\""
echo $?
exit 0

오류 코드 1로 인해 스크립트 실행이 실패했습니다.

./mymount "/storage/Some folder" "/storage/temp"

명령줄에서 잘 작동합니다.

mount -v --bind "/storage/Some folder" "/storage/temp"

Selinux가 비활성화되었습니다.

내가 뭐 놓친 거 없니?

답변1

당신이 그런 문제에 직면할 때마다 set -x그것은 당신의 친구입니다 . 스크립트를 다음으로 변경하고 다시 실행하세요.

#!/bin/bash
set -x
/usr/bin/mount -v --bind "\""$1"\"" "\""$2"\""
echo $?
exit 0

그러면 다음과 같은 출력이 표시됩니다.

terdon@tpad ~ $ sudo foo.sh "/storage/Some folder" "/storage/temp"
+ /usr/bin/mount -v --bind '"/storage/Some' 'folder"' '"/storage/temp"'
mount: bad usage
Try 'mount --help' for more information.
+ echo 1
1
+ exit 0

보시다시피 실제로 실행되는 것은 다음과 같습니다.

/usr/bin/mount -v --bind '"/storage/Some' 'folder"' '"/storage/temp"'

"\""$1"\""이 문제는 귀하가 을 (를 $1) 에 mount전달했기 때문에 발생합니다 "$1".디렉터리 이름의 일부인 것처럼 따옴표를 포함합니다.. 당신이하고 싶은 일은 :

#!/bin/bash
set -x
/usr/bin/mount -v --bind "$1" "$2"
echo $?
exit 0

관련 정보