Linux 如何仅在bash中将两个值都分配给两个变量时才连接两个变量?
仅当两个值都分配给两个变量时,如何连接两个变量Linux 如何仅在bash中将两个值都分配给两个变量时才连接两个变量?,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,仅当两个值都分配给两个变量时,如何连接两个变量 1. Assign $SERVER to $NODELIST if only $SERVER variable is set 2. Assign $NODE to $NODELIST if only $NODE variable is set 3. Concatenate $SERVER and $NODE [comma separated ]to $NODELIST if both $SERVER and $NODE is set #!/bin
1. Assign $SERVER to $NODELIST if only $SERVER variable is set
2. Assign $NODE to $NODELIST if only $NODE variable is set
3. Concatenate $SERVER and $NODE [comma separated ]to $NODELIST if both $SERVER and $NODE is set
#!/bin/bash
SERVER='sn01,sn02'
NODE='cn01,cn02'
if [[ -z $SERVER ]] || [[ -z $NODE ]] ; then
NODE_LIST=$SERVER,$NODE
echo "$NODE_LIST"
elif [[ -z $SERVER ]] || [[ -z $NODE ]] ; then
NODE_LIST=$SERVER
echo "$NODE_LIST"
elif [[ -z $NODE ]] || [[ -z $SERVER ]] ; then
NODE_LIST=$NODE
echo "NODE_LIST"
else
echo "none of the variables specified"
fi
但无法根据要求分配“节点列表”变量。类似
$ [[ -z "$SERVER" || -z "$NODE" ]] && NODELIST="$SERVER$NODE"
-如果字符串为NULL或空,则z返回TRUE。因此,输出是正确的,因为两个字符串都不是null。尝试将$NODE或$SERVER设为空。您将获得$NODE_列表您可以为此使用数组,并在数组中附加一个元素(如果该元素不是空的)
#!/bin/bash
server='sn01,sn02'
node='cn01,cn02'
arr=()
[[ -n $server ]] && arr+=("$server")
[[ -n $node ]] && arr+=("$node")
# print comma delimited output using all array elements
IFS=, && echo "${arr[*]}"
PS:我已将大写变量名更改为小写,以避免与环境变量发生潜在冲突。您可以使用:
[[-n$SERVER&&n$NODE]]&&NODE_LIST=“$SERVER,$NODE”
如果[-n$SERVER&&n$NODE]];然后NODE_LIST=“$SERVER,$NODE”echo$NODE_LIST fi如果只设置了$SERVER变量,如何将$SERVER分配给$NODELIST;如果只设置了$NODE变量,如何将$NODE分配给$NODELIST?很有效,谢谢。如何将这个逗号分隔的变量存储到数组中,这样我就可以将它输入到另一个命令。您已经在arrayarr
中有了这个命令。要将其存储在字符串中,请使用:IFS=,&&str=“${arr[*]}”