本文介绍了为什么read命令将所有单词读入名字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的脚本:

#!/bin/bash

IFS=','

read a b c d e f g  <<< $(echo "1,2,3,4,5,6,7") # <- this could be any other commands, I am just making up a dummy command call

echo $a
echo $b
echo $c

我希望它能输出

1
2
3

但是它输出:

1 2 3 4 5 6 7
blank line
blank line

我做错了什么?

推荐答案

您应该像这样使用它:

IFS=, read a b c d e f g  <<< "1,2,3,4,5,6,7"

在与 read 相同的行中使用 IFS ,以避免混乱当前的shell环境.

Use IFS in same line as read to avoid cluttering the current shell environment.

并避免使用命令替换只是捕获单个 echo 命令的输出.

And avoid using command substitution just to capture the output of a single echo command.

如果要在 read 中使用命令的输出,则最好使用 bash 中的"nofollow> 进程替换 :

If you want to use a command's output in read then better use process substitution in bash:

IFS=, read a b c d e f g < <(echo "1,2,3,4,5,6,7")

这篇关于为什么read命令将所有单词读入名字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 20:41