で文字列を比較します。 parameters.txt
ファイルの各行の区切り文字として:
を使用し、:
の残っているものはvar1
に、:
の右側はvar2
に格納します。 sheet_name
が格納されていない場合、var1
がsheet_name
とnot matched
を格納するときにmatched
を印刷したいとします。私が間違っているのは何は、私は内容が次のように<code>parameters.txt</code>という名前のファイルを持っているシェルスクリプト
filename=parameters.txt
IFS=$'\n' # make newlines the only separator
for j in `cat $filename`
do
var1=${j%:*} # stores text before :
var2=${j#*:} # stores text after :
if [ “$var1” == “sheet_name” ]; then
echo ‘matched’
else
echo “not matched“
fi
done
次かかわらず、常に何var1
店舗のmatched
を印刷し、私のコードはありますか?親切に助けてください。
ここで 'for'ループを使用しないでください。 http://mywiki.wooledge.org/BashFAQ/001 – chepner
を読んでください。http://www.shellcheck.netでコードを実行して、いくつかの問題を解決してください。また、適切な方法を知るためには、[For Line With Read](http://mywiki.wooledge.org/DontReadLinesWithFor)と[Bash FAQ 001](http://mywiki.wooledge.org/BashFAQ/001)も読んでください行単位/フィールド単位のデータを読み込みます。 –
引用符は "スマート" /ユニコードの引用符で、シェルスクリプトで必要なものはまったくありません。標準ASCII二重引用符と一重引用符を使用していることを確認してください。 –