前提・実現したいこと
テキストファイル(変数targetFile)に、特定の文字列(定数HOGE)が含まれているかをgrepしたいです。
含まれている場合は標準出力に"含みます"を、そうでない場合は"含みません"を表示したいです。
sh
1$ cat test.sh 2#!/bin/bash - 3 4targetFile="/home/testuser1/plainText.txt" 5HOGE="foo and bar" 6 7if [ "$(echo ${targetFile} | grep "${HOGE}" )" ] ;then 8 echo "含みます" 9else 10 echo "含みません" 11fi
console
1$ cat /home/testuser1/plainText.txt 2hoge 3fuga 4foo and bar 5piyo
上記の場合、plainText.txtには特定の文字列「foo and bar」が含まれているので、
シェルスクリプトの実行結果は「含みます」になると思いました。
しかし実行結果は下記の通り、★マークのあたりでうまくいっていないように思います。
console
1$ sh -xv test.sh 2#!/bin/bash - 3 4dir="/home/testuser1/plainText.txt" 5+ dir=/home/testuser1/plainText.txt 6HOGE="foo and bar" 7+ HOGE='foo and bar' 8 9if [ "$(echo ${dir} | grep "${HOGE}" )" ] ;then 10 echo "含みます" 11else 12 echo "含みません" 13fi 14++ echo /home/testuser1/plainText.txt 15++ grep 'foo and bar' 16+ '[' '' ']' ★grepができていないよう 17+ echo 含みません 18含みません
こちらについて、おそらくifまわりのクォーテーションを正しく書けていないせいと踏んでいるのですが、
具体的にどう書けば解決できるのかがわかりません。
お詳しい方、ご教示願えませんでしょうか。
よろしくおねがいします。
補足情報(FW/ツールのバージョンなど)
bash
CentOS7
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/05 15:47
2020/03/08 23:39