Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash创建缩进文本_Bash_String - Fatal编程技术网

使用bash创建缩进文本

使用bash创建缩进文本,bash,string,Bash,String,我想以可读的方式将列表打印到屏幕上。我使用一个循环遍历每个元素,并创建一个新列表,该列表的格式为逗号和换行符。问题是在输出的第一行,我想要一个标题。例如,我想打印如下内容: List: red, green, blue, black, cars, busses, ... 问题是在第二行和后面的行中创建缩进。我希望缩进是给定长度的。因此,问题简化为创建给定长度的空行。也就是说,我想要一个函数,create\u empty\u line\u长度,它输出给定数量的空格 length=5

我想以可读的方式将列表打印到屏幕上。我使用一个循环遍历每个元素,并创建一个新列表,该列表的格式为逗号和换行符。问题是在输出的第一行,我想要一个标题。例如,我想打印如下内容:

List: red, green, blue, black, cars,
      busses, ...
问题是在第二行和后面的行中创建缩进。我希望缩进是给定长度的。因此,问题简化为创建给定长度的空行。也就是说,我想要一个函数,
create\u empty\u line\u长度
,它输出给定数量的空格

length=5
echo "start:$(create_empty_line_of_length $length) hello"
在这种情况下,输出应为:

start:      hello
有人知道怎么做吗?

会的

yes ' ' | head -7 | tr -d '\n'
把“7”改成你的号码

也许你应该看看

man fmt
还有

这可能是最有效的方法

大多数情况下,它是一个内置的shell,如果不是的话,/usr/bin/printf作为coreutils的一个后备版本存在

所以

产生

      _hello
      _world

(我在这里使用了u而不是空格,但是空格也起作用,因为bash理解“”)

不确定这是否有助于你

在“hello”和“world”前面不是应该有七个吗?无论如何,谢谢你。它起作用了:)不,“%7s”是一个纯对齐规则,它说“取一个字符串,并将其与位置7右对齐,即:它只会创建空间。“%2s”“hello world”不会添加任何空间,因为“hello world”大于2,但“%40s\n%40s\n”“hello”“world”将使hello and world与pos 40右对齐。我在提出此问题之前遇到的问题不需要它。不过,它很鼓舞人心!我将进一步探讨如何使用awk,因为它似乎是一个强大的工具。:)
 printf '%7s%s\n%7s%s\n' '_' 'hello' '_' 'world'
      _hello
      _world