好的。我有点迷路,谷歌搜索对我帮助不大。 我有这样的命令:
filesize_filename=$(echo $line | awk ' ''{print $5":"$9}')
echo $filesize_filename
1024:/home/test
现在这个将两个返回或 awk 的项目保存到一个变量中。我想实现这样的目标:
filesize,filename=$(echo $line | awk ' ''{print $5":"$9}')
这样我就可以单独访问它们了
echo $filesize
1024
echo $filename
/home/test
我该如何实现?
谢谢。
最佳答案
用 awk 输出填充一个 shell 数组,然后用它做任何你喜欢的事:
$ fileInfo=( $(echo "foo 1024 bar /home/test" | awk '{print $2, $4}') )
$ echo "${fileInfo[0]}"
1024
$ echo "${fileInfo[1]}"
/home/test
如果文件名可以包含空格,那么你必须适本地调整 awk 中的 FS 和 OFS 以及 shell 中的 IFS。
当然你可能根本不需要 awk:
$ line="foo 1024 bar /home/test"
$ fileInfo=( $line )
$ echo "${fileInfo[1]}"
1024
$ echo "${fileInfo[3]}"
/home/test
但要注意在最后一种情况下 $line
中匹配本地文件名的通配字符。我希望有一种更强大的方法来从 shell 变量填充 shell 数组,但我想不出它。
关于bash - 将 awk 的输出保存到两个不同的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30917997/