2011-07-13 8 views
1

指定された場所でtarを抽出するスクリプトを実行する必要があります。私のような単純なものでしたパスが正しくてもシェルスクリプトcdが失敗する

:私は手のすべてでコマンドを実行した場合

cp test.tar /var/www/html 
cd /var/www/html 
tar xvf test.tar 

はOKです。私がそれらを.shで保存して#bash script.shを使用すると、次のエラーが表示されます。 ":ディレクトリcd:/ var/www/html"ではありません。すべての理想はなぜですか?

あなたの時間はTyです。

メモ:仮想マシン(CentOS 5.5)でスクリプトバージョンを試してみましたが、スクリプトはうまくいきました。問題は実際のマシンで発生します(同じOSディスクイメージ、仮想マシン...これは私にとって本当に奇妙なことです)。

追加:サービスmysqld start ...のようなものを呼び出そうとしています...これはdirが存在しないということにも失敗します。

+0

'html'が存在しない場合、copyコマンドはtest.tarの名前を 'html'に変更します。実際にはディレクトリで、ファイルのコピーではないことを確認してください。 – Cfreak

+0

それは存在する... dir – zozo

+0

あなたは別のユーザーとしてスクリプトを実行している可能性はありますか?あなたのスクリプトの一番上に 'whoami'と 'ls -la/var/www'を追加し、コマンドラインから直接実行したときの結果と比較してみてください。 – Costa

答えて

2

私はこの問題を解決しました。これはかなり面白いです。

Windows上で実行されている仮想マシンでcentos osというスクリプトを作成しましたが、Windowsでは「\ r \ n」、Linuxでは「\ n」です。

入力のコードが正しいため、スクリプトはvmで動作しましたが、2番目のコンピュータでは、ネイティブのLinuxでは正しくありませんでした。私はLinux上でまったく同じスクリプトを作成し、すべて正常に戻った。

注:Linux上で書かれた別の簡略化されたスクリプトを使用したため、mkdirの部分が機能しました。

1

cpファイル htmlのwwwディレクトリにtest.jarが対応しているようです。 cpを試す前にhtmlが存在し、ディレクトリであることを確認してください。

mkdir -p /var/www/html 
cp test.tar /var/www/html 
cd /var/www/html 
tar xvf test.tar 
+0

それは存在しています... – zozo

+0

そのエラーメッセージを与えるためのcdの唯一の方法は、ディレクトリではないターゲットのためです –

+0

それはスクリプトがhtmlと呼ばれるファイルを作成したようですか? (htmlが存在するとは思っていましたが)それをコピーしようとしました...これは問題の半分を解決します(後半で更新) – zozo

1

関連するノートでは、「〜」文字がbashで動作しないように見えるので、それを使用している場合はフルパスで置き換えてみてください。

+0

ありがとう。これは私が走っていたものです。そして可能な解決策は、その場所で〜を$ HOMEに置き換えることです(データソースを変更できない場合に備えて): cd $ {DirectoryString /#\〜/ $ HOME} –

関連する問題