(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Bash】特定の文字列が含まれているか否かで条件分岐する

スポンサーリンク

やりたいこと

Linux機にて変数hogeの文字列に「@」マークが入っていればifの条件分岐に記載されている処理を行いたい。

環境情報
# bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)

やり方

#!/bin/bash

echo $hoge > hoge.txt

if grep -q @ hoge.txt; then
 #条件分岐でやりたい処理
fi

以下、補足です。

補足

文字列に対して@マークが入っていれば@マーク以下の文字列を切り捨てる処理を書きたい際に本手順を利用しました。

echo $hoge | awk '{print substr($0,0,index($0,"@"))}'

仕組みとしては以下記事の通りです。

ただ、本処理は文字列に切り捨てたい文字列がない場合は文字列がnullになってしまいます。

# echo "abc@yahoo" | awk '{print substr($0,0,index($0,"@"))}'
abc
# echo "abcayahoo" | awk '{print substr($0,0,index($0,"@"))}'

よって冒頭の条件分岐を利用したという流れです。

一時ファイルとして書き出していますがもっとクールに出来ると思いますのでご存知の方はぜひお知らせください。