保存shell子进程中变量的值

时间:2014-04-24 17:06:35

标签: bash shell sh

while IFS=" " read token
do
  BUFFER="$BUFFER $token"
done < "$VAR"

我有一个问题可能与shbash shell read正在子进程中执行的事实有关,所以我找不到正确的保存方法并“链接”此while循环的结果。

简而言之,我的BUFFER变量在每个周期都会重置,我无法想到一个好的可移植方式来实现这个功能。

1 个答案:

答案 0 :(得分:1)

由于$VAR是文件名列表,我假设您需要将文件连接在一起,然后重定向到while循环。我认为以下内容应该适用于

$ VAR="
/etc/networks
/etc/papersize
"
$ while IFS=" " read token; do
      BUFFER="$BUFFER $token"
  done < <( cat $VAR )
$
$ echo $BUFFER
# symbolic names for networks, see networks(5) for more information link-local 169.254.0.0 letter
$ 

请注意<( ) process substitution具体为,因此可能无法使用


由于你需要在中使用某些东西,你可以将while循环放在所有文件名的for循环中:

#!/bin/sh

VAR="
/etc/networks
/etc/papersize
"

for f in $VAR; do
    while IFS=" " read token; do
        BUFFER="$BUFFER $token"
    done < $f
done

echo $BUFFER