使用Shell脚本格式化行

时间:2014-01-09 18:33:51

标签: shell format line

我在一个文件夹中有一个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

3 个答案:

答案 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