これは私のスクリプトです。
if [[ "$(echo "$2" | sed 's/.two//g')" == "load" ]] && [[ "$1" == "Decrypt" ]] || [[ "$(echo "$2" | sed 's/.two//g')" == "load" ]] && [[ "$1" == "Encrypt" ]]
then
key=aNXlye1tGbd0uP
else
if [ -z "$key" ]
then
key="$2"
fi
fi
2番目のパラメータを見つけて電位を取り除き、それと比較し.two
、load
そうであればにload
設定する必要があります。しかし、これはうまくいきません。実行してみるとこんな感じです。key
aNXlye1tGbd0uP
pskey Decrypt load (some string)
これは次の出力ですbash -x
。
++ echo load
++ sed s/.two//g
+ [[ load == \l\o\a\d ]]
+ [[ Decrypt == \D\e\c\r\y\p\t ]]
+ [[ Decrypt == \E\n\c\r\y\p\t ]]
+ '[' -z '' ']'
+ key=load
しかし、次のものを取り除くとうまく[[ "$1" == "Decrypt" ]]
いきます。その行に問題がありますか?
ベストアンサー1
私が正しく理解した場合は、次のようなものを探しています。
if [[ "$(echo "$2" | sed 's/.two//g')" == "load" && "$1" == "Decrypt" ]] ||
[[ "$(echo "$2" | sed 's/.two//g')" == "load" && "$1" == "Encrypt" ]]
then
...
fi
次のようにすべてを簡素化することもできます。
if [[ "$(echo "$2" | sed 's/.two//g')" == "load" && "$1" =~ (De|En)crypt ]]; then ...