这是我的脚本:
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
Run Code Online (Sandbox Code Playgroud)
它应该寻找第二个参数,删除 potential .two
,然后将其与 进行比较load
,如果是load
,则应设置key
为aNXlye1tGbd0uP
。但是,这不起作用。这是我运行时的样子。
pskey Decrypt load (some string)
Run Code Online (Sandbox Code Playgroud)
这是来自的输出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
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除 whats after [[ "$1" == "Decrypt" ]]
,它会起作用。那条线有什么问题?
如果我理解正确的话,你正在寻找这样的东西:
if [[ "$(echo "$2" | sed 's/.two//g')" == "load" && "$1" == "Decrypt" ]] ||
[[ "$(echo "$2" | sed 's/.two//g')" == "load" && "$1" == "Encrypt" ]]
then
...
fi
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以将整个过程简化为:
if [[ "$(echo "$2" | sed 's/.two//g')" == "load" && "$1" =~ (De|En)crypt ]]; then ...
Run Code Online (Sandbox Code Playgroud)