Bash の 'if' ステートメントで 2 つの文字列変数を比較するにはどうすればよいですか?の回答に従おうとしまし た。、しかし受け入れられた解決策は機能しませんでした。以下のスクリプトからわかるように、私の構文はその質問の解決策に従っており、 Bash syntax error: "[[: not found"というエラーが表示されます。はい、私も彼らの解決策を試しました。
ディレクトリからすべてのデータを削除しようとしている次のスクリプトがあります。すべてのデータを削除する前に、変数を stdout 値と比較して、正しいディレクトリがあることを確認したいと考えています。
間違ったディレクトリからすべてのデータを削除しないようにするために、スクリプト内の変数を *.ini.php ファイルに保存されているデータと比較しようとしています。
スクリプトは次のとおりです。
#!/bin/bash
#--- script variables ---
#base path of the timetrex web folder ending with a / character
timetrex_path=/var/www/timetrex/
timetrex_cache=/tmp/timetrex/
#--- initialize script---
#location of the base path of the current version
ttrexVer_path=$(ls -d ${timetrex_path}*.*.*)/
#the timetrex cache folder
ttrexCache_path=$(sed -n 's/[cache]*dir =*\([^ ]*\)/\1/p' < ${ttrexVer_path}timetrex.ini.php)/
echo $timetrex_cache
echo $ttrexCache_path
#clear the timetrex cache
if [[ "$ttrexCache_path" = "$timetrex_cache" ]]
then
#path is valid, OK to do mass delete
#rm -R $ttrexCache_path*
echo "Success: TimeTrex cache has been cleared."
else
#path could be root - don't delete the whole server
echo "Error: TimeTrex cache was NOT cleared."
fi
スクリプトの出力は次のようになります。
/tmp/timetrex/
/tmp/timetrex/
Error: Timetrex cache was NOT cleared.
出力からわかるように、両方の値は同じです。ただし、スクリプトが 2 つの変数を比較すると、それらは異なる値であると見なされます。
これは、値の型が異なるためでしょうか。if ステートメントで間違った比較演算子を使用していませんか? 前もって感謝します。