我有命令,输出两列。例如:
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:~$ uptime -s > tmpfile
undefine@uml:~$ read day hour < tmpfile
undefine@uml:~$ echo $day
2015-10-26
但是怎么做“posix sh way”,而不创建任何临时文件?
答案 0 :(得分:2)
如果您不关心名为$1
和$2
的两个指定变量,您可以使用:
set $(uptime -s)
(这不是一个完全认真的答案。)
答案 1 :(得分:1)
在POSIX shell中,您可以在此处记录文档以及命令替换:
read day hour <<EOF
$(uptime -s)
EOF
(从技术上讲,这可能仍然使用临时文件,但shell会为您管理它。)
答案 2 :(得分:-1)
您可以通过滚边将其拆分为
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`
希望这有帮助