アプリ版:「スタンプのみでお礼する」機能のリリースについて

Linuxでシェルスクリプトを書いています。

USBメモリをマウントし、
その中に Data というフォルダが存在しているかどうか確認をし、それをメッセージで表示する。
という内容です。

 #!/bin/bash
 sudo mount /dev/sda1 ./usb
 if [ ! -d ./usb/Data/ ]; then
  echo "Data 無し。"
else
   echo "Data 有り。"
 fi

と書いているのですが、
USBメモリの中に Data を用意しても、上記コードでは見つけることができないらしく、
常に"Data 無し。"と表示されてしまいます。
何故目的のフォルダを見つけることができないのでしょうか。

おそらく目的のフォルダがマウント先、つまり所有者がrootなのが問題なのだと思うのですが、
所有者がrootでも上記のようにフォルダの有無を判断するコードはあるでしょうか。

A 回答 (1件)

>sudo mount /dev/sda1 ./usb



まず、mountが成功していますか?
マウント先のディレクトリ名が「相対パス」表記になっていますから、
カレントディレクトリが、/の時と/rootの時と/usr/binの時などで動作が変わりますが…。

>if [ ! -d ./usb/Data/ ]; then

最後の/は不要…だと思いますが。
カレントディレクトリの場所によってはusbというディレクトリ自体が無いかも知れません。(前述の通り)

この回答への補足

作成したスクリプト自体の実行に sudo を付けたところ、正常に動作しました。
コマンド入力する文字数を減らしたかったので意図的にsudoを付けなかったのですが、付けるしか無いらしく、残念です。
このスクリプト名をAAAとし、
sudo ./AAA
と書いたスクリプトBBBを作成し、./BBBと入力し実行する、という流れでも正常に動作しますが、
まどろっこしくて。

補足日時:2010/01/16 11:09
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

マウントは成功しています。
マウントの行の次にls -lでマウントポイントの中を表示させてみましたが、USBメモリの中がちゃんと表示されました。
また、フルパスにしてみましたが、変化ありませんでした。
(Dataをフォルダでなくファイルにしてみて)-fで、ファイルかどうか判断する条件式にするとうまくいくんですが、
-dだと判断できていないようです。

お礼日時:2010/01/16 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!