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


相关文章
|
9月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
849 2
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
259 1
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
Java Shell Linux
Shell 变量设置
Shell设置变量
290 5
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
378 4
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
329 10
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
894 1
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
180 0
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
714 0