シェルスクリプトでマウントに失敗しました。

シェルスクリプトでマウントに失敗しました。

非常に単純なシェルスクリプトを作成しました。

#!/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

おすすめ記事