用两个变量bash中的两个或单个字符串拆分一行

用两个变量bash中的两个或单个字符串拆分一行,bash,shell,Bash,Shell,我试图在bash中分离行的内容。我的代码是这样的 while read line; do var1=${line% *} var2=${line#* } echo -e "var1[$var1] var2[$var2]" done < "shares.lst" 输出如下: var1[defaults] var2[data] var1[sample] var2[here] var1[okay] var2[okay] 当线路只有一条时,就会出现问题。我应该采取什

我试图在bash中分离行的内容。我的代码是这样的

 while read line; do
    var1=${line% *}
    var2=${line#* }
    echo -e "var1[$var1] var2[$var2]"
 done < "shares.lst"
输出如下:

var1[defaults] var2[data]
var1[sample] var2[here]
var1[okay] var2[okay]

当线路只有一条时,就会出现问题。我应该采取什么方法来检查变量是否只有一个?

我认为您可以比较var1和var2是否相等,如果它们不相等,则返回您的结果。像

if ["$var1" != "$var2"]; then
    echo -e "var1[$var1] var2[$var2]"

read
可以为您拆分:

while read var1 var2; do
   echo -e "var1[$var1] var2[$var2]"
done < "shares.lst"
while read var1 var2; do
   echo -e "var1[$var1] var2[$var2]"
done < "shares.lst"
var1[defaults] var2[data]
var1[sample] var2[here]
var1[okay] var2[]