Bash 将命令的输出放入sh中的多个变量中
我有一个命令,它输出两列。例如:Bash 将命令的输出放入sh中的多个变量中,bash,posix,sh,Bash,Posix,Sh,我有一个命令,它输出两列。例如: undefine@uml:~$ uptime -s 2015-10-26 08:47:12 如何将这两列放入单独的变量中? 我想做一些类似的事情: undefine@uml:~$ uptime -s | read day hour undefine@uml:~$ echo $day undefine@aml:~$ 我知道,在bash中,我可以像这样执行它: undefine@uml:~$ read day hour <<< $(uptime
undefine@uml:~$ uptime -s
2015-10-26 08:47:12
如何将这两列放入单独的变量中?
我想做一些类似的事情:
undefine@uml:~$ uptime -s | read day hour
undefine@uml:~$ echo $day
undefine@aml:~$
我知道,在bash中,我可以像这样执行它:
undefine@uml:~$ read day hour <<< $(uptime -s)
undefine@uml:~$ echo $day
2015-10-26
undefine@uml:~$read day hour在POSIX shell中,您可以在此处创建一个文档以及命令替换:
read day hour <<EOF
$(uptime -s)
EOF
read day hour如果您不关心两个指定变量命名为$1
和$2
,您可以使用:
set $(uptime -s)
(这不是一个完全严肃的回答。)您可以通过管道将其分割成这样
myVar1=$(echo uptime -s | cut -d" " -f1)
myVar2=$(echo uptime -s | cut -d" " -f2)
这通常适用于bash。在sh上,您必须使用回勾,以便
myVar1=`uptime -s | cut -d" " -f1`
myVar2=`uptime -s | cut -d" " -f2`
希望这有帮助一个临时变量如何?我发现这个读一个b c<@tripleee你选择的副本是为bash
,而不是POSIX。@RamboRamon不,进程替换不符合POSIX。@chepner-Thx,有好的源来查找这些东西吗?你自己的第二个例子有什么问题吗?如果只有一行,使用临时文件并使用连接命令代码>:正常运行时间-s>tmpfile;读取日小时数
。POSIX没有提供一行定义文档的方法;这就是为什么bash
和其他shell在这里提供字符串。@RamboRamon哪种正常运行时间实际上需要参数?我以前从未见过它,所以我非常肯定大多数posix系统默认情况下也不会有它。@123这与问题或答案不太相关,它提供了一种posix兼容的方式,将输出从一个命令传输到当前shell中执行的read
命令。(正常运行时间
本身不在POSIX规范的范围内,因此不知道任何特定的实现会接受什么。)嗯?它把myvar文本“uptime-s”-而不是日期/时间:-)放进去,这很好;它会覆盖当前位置参数,但当需要保留当前值时,它通常很明显,而且实际上很容易做到。
myVar1=`uptime -s | cut -d" " -f1`
myVar2=`uptime -s | cut -d" " -f2`