ProcessBuilder.environment()
不要像上面的代码那样重复,我需要:
我正在做类似下面的事情,但我被困住了也许有人可以帮助我:
var1=$(echo $getDate | awk '{print $1} {print $2}')
var2=$(echo $getDate | awk '{print $3} {print $4}')
var3=$(echo $getDate | awk '{print $5} {print $6}')
PS - 使用ksh
问题:$ COMMAND存储$ locationA中找到的文件数。我需要循环查找找到的文件数量并将其日期存储在数组中。
答案 0 :(得分:0)
我没有得到你的示例代码的含义('for'循环应该做什么?变量COMMAND的内容是什么?),但在你的问题中,你要求在 array ,而在你希望简化的代码中,你不使用数组,而是简单的变量(var1,var2,....)。
如果我理解你的要求,你的变量getDate包含一个由空格分隔的几个单词的字符串,你想要将前两个单词分配给var1,将以下两个单词分配给var2,依此类推。这是对的吗?
答案 1 :(得分:0)
现在编辑的代码至少有点清楚了,虽然我仍然不明白,为什么你使用i作为循环变量,并在循环内的第一个语句中覆盖它。
然而,一些评论:
如果你将“$ i”推入数组,你会得到一个字面上的“$”符号,后跟字母“i”。要添加包含数字的变量i,您需要双引号(“$ i”)。
我不明白为什么要循环变量COMMAND的连接。此变量将始终包含一个数字,这意味着循环将只执行一次。
您可以使用计数循环,在每次迭代时将循环变量递增2。您必须事先预先计算迭代次数。
也许更简单的替代方案,可以在bash或zsh中工作(我没有尝试其他shell)是首先在数组中转换变量,
tmparr =($(echo $ getDate | fmt -w 1))
然后使用循环来收集这个元素的对:
myarray=()
for ((i=0; i<${#tmparr[*]}; i+=2))
do
myarray+=("${tmparr[$i]} ${tmparr[$((i+1))]}")
done
$ {myarray [0]}将包含一个字符串,其中包含来自getDate等的第一个单词。
答案 2 :(得分:0)
这个应该适用于zsh,至少对于较新的版本:
myarray=()
echo $g|fmt -w 1|paste -s -d " \n"|while read s; do myarray+=("$s"); done
这使第一对留在$ {myarray [1]}等等。
它不适用于bash(和旧的zsh版本),因为这些shell会在子shell中执行循环体。
增加:
再想一想,在zsh中这个更简单:
myarray=("${(f)$(echo $g|fmt -w 1|paste -s -d ' \n')}")