Shell下支持变量的重复字符串

简介:

Python解决重复字符串是一个很轻松的事,比如说a="james",那么要获得"jamesjamesjames"就是"a*3"。


但是这种“*”的字符串乘法在shell里是没有的,比如说“要输出10个a”,还不想用for循环来做,怎么办?


首先都知道如果只是想输出1~10这十个数,是很简单的:

#echo {1..10}就会得到:1 2 3 4 5 6 7 8 9 10

而使用#seq 1 10也可以,只不过这样是竖着的,如果想要是横着的,就的是#seq -s " " 1 10,-s是指定分隔符的意思。

但是如果照葫芦画瓢,#echo "a"{1..10}的话输出的就会是10个a吗?

很可惜,输出结果是a1 a2 a3 a4 a5 a6 a7 a8 a9 a10。跟预期目标有差距,很讨厌。

不过这个方法还是有他的作用的,比如#echo {a,b,c}{1,2,3}

上面的命令会生成以下结果:a1 a2 a3 b1 b2 b3 c1 c2 c3。


#echo a {,,,,,,,,,,},打括号里是十个逗号,那这样效果是什么?

效果就是a a a a a a a a a a。


好像很接近了,但是这样的方法有空格不说,而且要手动打十个逗号,有这个时间我干脆直接打十个a多好,而且要是输出1000个a,我难道还要打1000个逗号吗?


那么就来一个困难的方法吧:

1
2
str=$( printf  "%-10s"  "a" )
echo  "${str// /a}"

这样的话输出就是10个a了。但是这个参数是什么意思呢?在这里我稍作更改:

1
2
str=$( printf  "%-5s"  "o" )
echo  "${str// /x0}"

这时候的输出就是ox0x0x0x0,可见str 后面的数字代表重复次数,而后面的单词就是开头。下面的echo输出“x0”就是具体的填充项。大括号里的str//是固定的,中间不能加东西。


这个方法不错,但是也太麻烦了,不好记。


换一个方法,用#printf %.sa {1..10}如何?

输出就是aaaaaaaaaa,没有空格,但是如果想要支持变量的话呢,再试试。

wKiom1c_yZ_CIibGAABIuOApugA002.png


看样子并不支持变量。


如何能支持变量呢?还在找。


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1775649


相关文章
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
1月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
24 0
|
2月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
44 5
|
3月前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
54 4
|
2月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
30 0
|
3月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
202 1
|
4月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
44 10
|
4月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
5月前
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
222 0
|
5月前
|
监控 Shell 开发者
Shell 字符串操作:让你的脚本语言更加灵活
在Shell脚本中,字符串操作至关重要,包括计算长度、连接与截取。获取字符串长度使用`${#变量名}`,如`echo ${#name}`显示`4`。字符串连接可通过`$变量名`或`${变量名}`实现,例如`name=alex; str1=$name$age`。字符串截取有多种方式,如`${str:起始位置:长度}`从左边截取,`${str#*chars}`从左边去除匹配的字符,`${str%*chars}`则从右边去除。通过练习这些基本操作,能提升Shell脚本的编写效率。
31 0