我在一个文件夹中有一个shell脚本列表(以.sh结尾),我正在尝试列出它们,列表中每行应该有两个脚本名称(用空格分隔)。我写了以下脚本,但没有显示任何错误它不起作用。我希望能在这里得到一些帮助:
file1=""
for file in $(ls ./*.sh); do
i=1
file1="$file1$file "
if [ $i -lt 3 ]; then
i=$(( i++ ))
continue
fi
echo "file1 is $file1" # expected $file1 is: scriptName1.sh scriptName2.sh
echo $file1 >> ScriptList.txt # save the two file names in the text file
file1=""
done
答案 0 :(得分:3)
要获得制表符分隔输出:
ls *.sh | paste - -
答案 1 :(得分:2)
pr
实用程序也可用于列化。它可以“垂直”分割数据:
$ seq 10 | pr -2 -T -s" "
1 6
2 7
3 8
4 9
5 10
或“横向”
$ seq 10 | pr -2 -T -s" " -a
1 2
3 4
5 6
7 8
9 10
答案 2 :(得分:1)
每次在循环中设置i=1
都不是一个好主意。
尝试
ls -1 | while read a;
do
if [ -z $save ]; then
save="$a"
else
echo "$save $a"
save=""
fi
done