如何在bash中把两个变量连接起来,只有当两个变量的值都分配给两个变量时,才可以连接两个变量?

1 人关注

如何连接两个变量,只有当两个变量的值都被分配给两个变量时,才能连接?

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"
echo "none of the variables specified"

但无法按照要求分配 "NODE_LIST "变量。

3 个评论
你可以使用。【替换代码0
if [[ -n $SERVER && -n $NODE ]] ; then NODE_LIST="$SERVER,$NODE" echo $NODE_LIST fi
如果只设置了$SERVER变量,如何将$SERVER分配给$NODELIST;如果只设置了$NODE变量,如何将$NODE分配给$NODELIST?
linux
bash
shell
awk
sed
asokan
asokan
发布于 2017-09-25
3 个回答
nu11p01n73R
nu11p01n73R
发布于 2017-09-25
已采纳
0 人赞同

Something like,

$ [[ -z "$SERVER" || -z "$NODE" ]] && NODELIST="$SERVER$NODE"
    
anubhava
anubhava
发布于 2017-09-25
0 人赞同

你可以使用一个数组,如果它不是空的,就在数组中追加一个元素。

#!/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[*]}"