我做了一个非常简单的shell脚本:
#!/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是残疾人。
我是不是遗漏了什么?
发布于 2018-01-10 14:43:40
每当你遇到这样的问题,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"\""
,所以传递给mount
的不是$1
,而是"$1"
,其中包含的引号就好像它们是目录名的一部分。你想做的是:
#!/bin/bash
set -x
/usr/bin/mount -v --bind "$1" "$2"
echo $?
exit 0
https://unix.stackexchange.com/questions/416100
复制相似问题