我想在所有者中读取文件列表,然后将其与当前所有者进行比较并输出错误(如果它不相同)。
我有以下内容,为了简单起见,我用简单的回声替换了比较,因为它不是比较出错:
background-image: url('/images/myimage.png');
stat返回一个字符串列表(在本例中为3个值),在这种情况下都使用我的用户名,但read只是将其作为单个读取和字符串输出。
while IFS=' ' read -ra own; do echo ${own[@]}; done <<< $(stat -c %U file*.*)
澄清:我的意思是循环只处理一次,返回所有3个值的字符串,而我想要循环的3次迭代,每次包含一个值。
我已改为IFS =和IFS =&#39; \ t&#39;如果我以某种方式误读了stat的输出,但即使我只是定义一个类似&#34的字符串,我也会得到相同的行为。我在这里&#34;而不是stat命令,所以我显然做了别的错误。
哦,我确实也需要一行声明,所以如果那是问题那么我想我有点搞砸了。
答案 0 :(得分:1)
为了获取数组的每个元素,您可以使用own
循环遍历变量for
:
stat -c %U file*.* | { read -ra own; for i in ${own[@]}; do echo $i; done; }
另一种方法是:
{ read -ra own; for i in ${own[@]}; do echo $i; done; } <<< $(stat -c %U file*.*)
请注意,您不需要while
循环,因为您可以在一行中获取所有内容。