unix while循环后不保留变量值

rdrgkggo  于 2023-04-29  发布在  Unix
关注(0)|答案(1)|浏览(123)

我正在写一个循环,它在一个变量def中累积字符串,从一个heredoc中阅读。在循环退出后,我看不到变量的值。

#!/usr/bin/sh

def=""
while read x; do
   def="$def -D$x"
   echo $def
done <<-COMMANDS_GREEN
hello="hello green world"
host="greenmen.com"
port=80
COMMANDS_GREEN

################### exit loop ########################
echo definition: $def

作为脚本输出,循环里面的所有.循环外的**definition:**不显示任何内容:

-Dhello="hello green world"
-Dhello="hello green world" -Dhost="greenmen.com"
-Dhello="hello green world" -Dhost="greenmen.com" -Dport=80
################### exit loop ########################
definition:

我是在Solaris 10下写的,而不是bash

egmofgnx

egmofgnx1#

改为ksh,解决了问题

#!/usr/bin/ksh

感谢@jhnc和@Gilles Quénot在评论中提供的信息

相关问题