文字列比較

文字列比較

2つの文字列を比較するのに問題があります。印刷時に同じであっても、私のifステートメントはfalseを返します。

#!/bin/bash

string1="HDMI"
string2="PC Speaker"

hash=$(pacmd list-sinks | grep active)
echo $hash
trigger="active port: <analog-output-speaker>"
echo $trigger

if [ "$hash" == "$trigger" ]; then
   pacmd set-card-profile 0 output:hdmi-stereo+input:analog-stereo  
   echo $string1
else
   pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo    
   echo $string2
fi

次の出力が生成されます。

active port: <analog-output-speaker>
active port: <analog-output-speaker>
Welcome to PulseAudio! Use "help" for usage information.
>>> >>> PC Speaker

ベストアンサー1

常に変数参照

と言いますが、echo $hash これは前後のスペースを削除し、すべての内部スペースを圧縮します。変数の内容を表示しません。$hash

代わりにecho "<$hash>"先行スペースが表示されます。

Pulse Audioが「アクティブ」という単語の前にタブを使用しているようです。したがって、トリガーの値の先頭にタブを置くと機能します。

おすすめ記事