Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何仅在bash中将两个值都分配给两个变量时才连接两个变量?_Linux_Bash_Shell_Awk_Sed - Fatal编程技术网

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?很有效,谢谢。如何将这个逗号分隔的变量存储到数组中,这样我就可以将它输入到另一个命令。您已经在array
arr
中有了这个命令。要将其存储在字符串中,请使用:
IFS=,&&str=“${arr[*]}”