매우 간단한 쉘 스크립트를 만들었습니다.
#!/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