使用Shell脚本格式化行

使用Shell脚本格式化行,shell,format,line,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 ech

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

每次在循环中设置
i=1
不是一个好主意

试一试


每次在循环中设置
i=1
不是一个好主意

试一试


要获得制表符分隔的输出:

  ls *.sh | paste - -

要获得制表符分隔的输出:

  ls *.sh | paste - -
该实用程序也可以方便地进行列化。它可以“垂直”拆分数据:

或“水平”

该实用程序也可以方便地进行列化。它可以“垂直”拆分数据:

或“水平”


+1用于粘贴,但不应使用
ls
,请使用
printf“%s\n”*。sh |粘贴--
有办法获得“空格”分隔的输出吗?谢谢,printf有帮助吗?我喜欢使用
printf“%25s\n”*sh
来帮助对齐,但没有宽度说明符似乎并不重要。要将分隔符更改为空格,请使用
paste-d'-
+1进行粘贴,但不应使用
ls
,使用
printf“%s\n”*。sh |粘贴--
有办法获得“空格”吗分离输出?谢谢,printf有帮助吗?我喜欢使用
printf“%25s\n”*sh
来帮助对齐,但如果没有宽度说明符,这似乎无关紧要。要将分隔符更改为空格,请使用
paste-d'-
注意,
-1
在管道传输或重定向
ls
的输出时自动启用。将
ls
ls | cat
进行比较,但是,
ls>/dev/tty
将生成列:)注意,当
ls
的输出通过管道传输或重定向时,
-1
将自动启用。将
ls
ls | cat
进行比较,但是,
ls>/dev/tty
将生成列:)
$ 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