私の問題を助ける必要があります。私はシェルスクリプトを作る必要がある ...rmシェルで他の人にlinux
これは、それが私の考え
if [ rm -r -f /directorie ]; then
code
else
code
fi
...
どのように私ができるのか?
私の問題を助ける必要があります。私はシェルスクリプトを作る必要がある ...rmシェルで他の人にlinux
これは、それが私の考え
if [ rm -r -f /directorie ]; then
code
else
code
fi
...
どのように私ができるのか?
このコードは、あなたが望むものを達成することができる:
#!/bin/bash
rm -r /directorie > /dev/null 2>&1; rc="$?"
if [ "$rc" -eq "0" ]; then
# code here
else
# code here
fi
注:rm -rf /directorie
ので、それはif
テストに適していない、常にリターンコード= 0(true)を返します(オプションf
付き)。
編集:この答えはbash
ワンライナーに凝縮することができます。
rm -r /home/owner/scripts > /dev/null 2>&1 && code here (true) || code here (false)
そのユーザーにディレクトリを削除する権限がない場合はどうなりますか?ディレクトリが存在するかどうかをチェックし、ディレクトリの再帰的な削除が成功したかどうかを確認することは、全く異なる2つのことです。 – alvits
あなたは正しいことを指摘してくれてありがとうございます。最初に私はディレクトリテストが存在しない場合にはディレクトリを削除しないという唯一の理由 'rm -rf'が(私が思ったように)試行されていたものに対して非常に良いプロキシになると考えました。私の危険な仮定!確かに、許可、そしておそらく他のもの!私は答えを修正しました。コメント歓迎。 –
dir=/directory
test -d "${dir}" && rm -rf "${dir}" && ! test -d "${dir}" && echo OK || echo NOK
は、あなただけの場合のrm -rf /ディレクトリ 'にあなたの状態を変更しますか。その後? –
'rm -r -f/directorie = trueの場合、あなたがちょうど投稿した解決策。ディレクトリが存在し、削除されたか否かにかかわらず、このテストは常に「真」に等しくなるため、正しいとは言えません。私の答えをチェックして、それはあなたが探しているものに適しているかもしれません。 –
'rm -f'はコマンドが働いたかどうかにかかわらず常に' 0'を返します。 '-f'を指定しないと、' stderr'にメッセージを書き込み、エラー時にはゼロ以外の値を返します。 – alvits