当我尝试在变量中存储 ls -ltr * .sh 输出时,它工作正常,但是当我尝试存储在数组中时,它会让我犯错误。如何将命令输出存储在数组中,就像存储在变量中一样。
实施例(1):
set -A arr $(ls -ltr *.sh)
echo "${arr[@]}"
错误:
-rw-r - r--:错误选项
为什么会出现此错误,此数组如何处理命令输出。我试过如下。
实施例(2):
set -A arr "$(ls -ltr *.sh)"
echo "${arr[@]}"
错误:这里输出是单行,并说badoptions。如何逐行打印数组输出。
-rw-r - r-- 1 root system 0 Apr 23 07:06 tt2.sh ^ J-rw-r - r-- 1 root system 0 Apr 23 07:06 tt1.sh ^ J- rw-r - r-- 1 root system 0 Apr 23 07:06 test.sh ^ J-rw-r - r-- 1 root system 49 Apr 23 07:09 tt.sh:bad option(s)< / p>
答案 0 :(得分:0)
我知道有一段时间了...但是以防万一。
set -A arr -- $(ls -ltr *.sh)
但是您最终将得到一个数组,该数组将存储数据而不是每行存储一行数据,而是在每个空间存储一个新索引。
使用相同的--
我不知道有谁能满足您的需求。我会自己循环执行此操作。像这样的东西:
#!/bin/ksh
j=0
while read line; do
array[$j]="$line"
((j++))
done <<< "$(ls -ltr *.sh)"
print ${#array[*]}
print -- ${array[2]}
希望它仍然可以帮助