2017-03-01 16 views
-1

dateコマンドで正しく出力されないものをスクリプトしようとしています。ここで私はこれまで持っているものの内容です:dateそのようなファイルやディレクトリがありません

#!/bin/bash 
# Get RPM manifest 
# Output written to /tmp 

NOW=$(date +%D) 

rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > /tmp/$HOSTNAME.RPM_Manifest.$NOW.txt 

私はこのスクリプトを実行すると、私はこのメッセージが表示されます。

[[email protected] ~]# sh /usr/local/bin/rpm_manifest.sh 
/usr/local/bin/rpm_manifest.sh: line 7: /tmp/linmachine1.RPM_Manifest.03/01/17.txt: No such file or directory 

私は問題は日付がNOW変数Iの内部フォーマットする方法である疑いがあります定義することが原因かもしれません。私は引用符の有無にかかわらず試して、同じことを得る。マニュアルページを見ると、フォワードスラッシュがドットで置き換えられるようなデフォルトの動作を変更する方法は見当たりませんでした。これは、問題がどこにあるのかと思っています。

編集:ご返信いただきありがとうございます。私は本当にこれがなぜ落とされたのか分からない。私は正当な質問をしました。何がありますか?

+2

を好むものは何でもして.を置き換えます。ファイルを 'chmod + x'で実行可能にして直接実行するか、' bash'で実行してください – Aserre

+0

ファイル名を 'sort>"/tmp/$ HOSTNAME .... txt "' – fedorqui

+0

としてください。かなり明示的です。 'date'の問題はありませんが、出力ファイルを開くと(シェルが' date'を開始する前に*発生します)、ディレクトリ ' tmp/linmachine1.RPM_Manifest.03/01'が存在しません。 –

答えて

1

はい、ファイル名にスラッシュを使用しないでください。

用途:

now=$(date "+%d.%m.%Y") 

rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > "/tmp/$HOSTNAME.RPM_Manifest.$now.txt" 

代わりに、またはsh` `を使用してプログラムを実行しないでください、あなたは` bash`シェバングを持っている場合は、注意点として

+0

'now = $(date date" +%d。%m。%Y ")'の余分な 'date'は、誤っていると思われます。 – Aserre

+0

@Aserre yes、指摘ありがとうございます。 – arco444

関連する問題