while IFS=" " read token
do
BUFFER="$BUFFER $token"
done < "$VAR"
我有一个问题可能与sh
和bash
shell read
正在子进程中执行的事实有关,所以我找不到正确的保存方法并“链接”此while
循环的结果。
简而言之,我的BUFFER
变量在每个周期都会重置,我无法想到一个好的可移植方式来实现这个功能。
答案 0 :(得分:1)
由于$VAR
是文件名列表,我假设您需要将文件连接在一起,然后重定向到while循环。我认为以下内容应该适用于bash:
$ 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具体为bash,因此可能无法使用sh。
由于你需要在sh中使用某些东西,你可以将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