首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程短文:Bash echo如何原生输出带空格字符串而不换行

今天我们说一个最为常用输出字符串指令 echo。 为什么说这个最常用指令呢?因为很多人每天都在用。却在使用过程中遇到了大大小小许许多多坑而不可避免。今天我们通过一个问题,给出解决方案。...带领读者深入了解一下bash内层原理对echo影响。 ?...那么现在有一个需求,假如需要对每行文本做进一步处理,在bash中使用for循环逐行处理。...每行文本中间有空格地方,在打印时候都会另起一行。 有没有什么解决方案呢? 有人说你只需要在变量外层加上双引号,就可以作为一行字符串处理了。事实会是这样吗?我们测试一下。 ?...原来,bash循环默认使用空格作为分隔依据。 我们只用手动指定 “\n”换行符为分隔依据,就顺利地原样输出了。 写在最后 “书读百遍,其义自见”!

4.3K30

bash shell参数展开(Shell Parameter Expansion):替换变量(variable)中字符串

在写bash shell脚本时,如果遇到要替换变量字符串,首先想到就是用sed命令,比如下面的示例将变量str中数字123替换成UUU: $ str=hello,word,123 $ echo...$str | sed -E -e 's/[0-9]/U/g' hello,word,UUUU 上面的例子中用到echo,sed两个命令来实现字符串替换,略显麻烦 其实bash提供了更简单语法来实现上面的功能...,按照{parameter/pattern/string}模式可以简单的如下替换 {parameter/pattern/string}格式说明: 参数名 说明 parameter 变量名 pattern...匹配模板(类似正则表达式),据此查找要匹配字符串 string 对满足pattern匹配条件字符串进行替换字符串 pattern 格式参见 《Pattern-Matching》 https...# 如果只是要替换最后一个出现数字则这样写 hello,word,U23 $ echo ${str/%[0-9]/U} hello,word,12U 以上雕虫小技都来自于GNU bash shell手册

3.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

UNIX 入门指南 – 什么是 Shell 脚本

Shell 在用户按 Enter 键后,从用户输入设备读入输入信息,它通过查看用户输入第一个单词,来获知用户想要执行命令。一个字即使字符不分割组成字符串,一般是空格和制表符分割字。...下面是在显示器上显示当前日期和时间 date 指令例子: $date Thu Jun 25 08:30:19 MST 2009 用户也可以定制自己喜欢命令提示符,方法是改变环境变量 PS1。...Bourne shell通常是安装在大多数版本 Unix /bin/sh 目录。由于这个原因,在不同版本 Unix 上也会选择这种 Shell 来编写脚本。...毕竟,Shell 是一种真正编程语言,它可以有变量,控制结构等等。无论多么复杂脚本,它仍然只是一个顺序执行命令列表。...以下脚本使用 read 命令从键盘输入并分配给变量 PERSON,最后打印 STDOUT。 #!

96500

shell 脚本语法

dos2unix dos2unix 也可以使用 vi,执行 :set ff=unix,将文本转为 unix 格式 变量 普通变量 定义变量 变量名=变量值 不能有空格.../test.sh 显示变量 8 清除变量 交互输入变量 read -p "显示字符串" [变量名1 变量名2 变量名3 ...] #!.../test.sh Windows_NT 注意事项: 变量名只能包含英文字母下划线,不能以数字开头 等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号括起来 双引号.../bin/bash num=200 echo"num=$num" #Snum当成变量值处理 echo'num=$num' #Snum当成字符串处 修改环境变量 以常用修改系统路径为例 export...1、2、3 ... 9 运行脚本时传递给其参数,用空格隔开 $?

1.6K30

linux shell指令大全整理

linux shell指令 shell是一种脚本语言, 需要有编译器执行 bash是linux下默认shell sh是unix下默认shell 在ubuntu中bash和sh都可用 执行...单引号限制: 单引号里任何字符都会原样输出,单引号字符串变量是无效; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。...字符串运算符 用来计算两个字符串是否相等, 假定变量a为”abc”,变量b为”efg”, 要用[]括号 运算符 说明 举例 = 检测两个字符串是否相等,相等返回 true。...而且用了let命令,let 命令是 BASH 中用于计算工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量 #!...输出重定向是将输出定向到文件里 输入重定向是从文件读书数据作为输入给程序 >右边不需要空格 深入理解 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin

1.6K50

Linux 操作系统下bash read命令

这个命令可以用来读取键盘输入,当使用重定向时候,可以读取文件中一行数据。 Bash附带了许多内置命令,您可以在命令行或Shell脚本中使用它们。 在本文中,我们将探讨内置read命令。...bash内置read命令 read是bash内置命令,可从标准输入(或文件描述符)中读取一行并将该行拆分为单词。 第一个单词分配给名字,第二个单词分配给名字,依此类推。...更改定界符here doc read默认行为是使用一个或多个空格,制表符和换行符作为分隔符,将行拆分为单词。 要将另一个字符用作分隔符,请将其分配给IFS变量(内部字段分隔符)。...当指定多个定界符时,请将字符分配给IFS变量,并且在它们之间没有空格。...提示字串 编写交互式bash脚本时,可以使用read命令获取用户输入。 要指定提示字符串,请使用-p选项。 该提示会在执行read之前打印出来,并且不包含换行符。

2.3K40

shell脚本语言(超全超详细)

shell脚本识别该变量,设为全局变量) 注意事项: 5、预设变量 shell直接提供无需定义变量 案例: 脚本标量特殊用法 6、变量扩展 6.1、判断变量是否存在 6.2、字符串操作...unix文件 方法一:dos2unix 如果没有该插件 需要安装 sudo apt-get install dos2unix dos2unix shell脚本 转换成功就可以执行运行 方法二:...运行结果: 注意事项: 1、变量名只能包含英文字母下划线,不能以数字开头 1_num=10 错误 num_1=20 正确 2、等号两边不能直接接空格符,若变量中本身就包含了空格,...则整个字符串都要用双引号、或单引号括起来 3、双引号 单引号区别 双引号:可以解析变量值 单引号:不能解析变量值 运行结果: 如果想在PATH变量中 追加一个路径写法如下...()由子shell 完成 {}由当前shell执行 6、变量扩展 6.1、判断变量是否存在 6.2、字符串操作 7、条件测试 test命令:用于测试字符串、文件状态和数字 test

2.5K20

shell编程知识点集锦

在使用过程中,我们会看到有人用双引号将带待查找模式包围,也有人用单引号将带待查找模式包围,再使用字符串时候,也有些人既不用单引号也不用双引号。那么单引号和双引号区别是什么呢?...不加引号: 不会将含有空格字符串视为一个整体输出。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。...如果字符串中带有空格等特殊字符,则不能完整输出,需要改加双引号,一般连续字符串,数字,路径等可以用。.../bin/bash echo 'your are in second file' . first 注意,点号与脚本文件之间记得要有空格。 方法三:使用sh #!...(2) 在用户目录下.bash_profile文件中增加变量【对单一用户生效(永久)】 用VI在用户目录下.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久”。

1.5K10

Linux命令(36)——awk命令

1.简介 AWK是一个优良文本处理工具,Linux及Unix环境中现有的功能最强大数据处理引擎之一。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令输出。...它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。...]:从指定awk脚本文件program-file读取awk指令; -m[f/r] val:对val值设置内在限制,-mf选项限制分配给val最大块数目;-mr选项限制记录最大数目。...开头;另外命令行变量将不再生效; -W gen-po,--gen-po:解析awk程序,产生.po格式文件到标准输出,来标明程序中每一个可本地化字符串位置(自己翻译可能不准确); -W help...由match函数所匹配字符串第一个位置 RLENGTH 由match函数所匹配字符串长度 SUBSEP 数组下标分隔符(默认值是\034) TEXTDOMAIN

2.2K20

嘘……这些bash命令鲜为人知,但是非常有用!

read:询问用户输入 read 命令允许您从用户那里获取输入并将其存储在变量中。 #!/usr/bin/env bash echo "What is your name?"...这将等待您(用户)输入,然后将name变量值设置为您输入字符串。 您还可以通过在命令中指定-p选项来使上面的示例更紧凑read,这将打印在 之后指定字符串-p,然后要求用户输入: #!...之后添加了一个空格What is your name?。如果我们不添加它,它实际上会What is your name?...在没有空格情况下打印,这会使用户在输入时看起来有点奇怪: [202203211128061.png] Mapfile:为变量分配文件行值 您可以使用该mapfile命令读取文件内容,然后将该输出分配给...例如,让我们创建一个名为文件file.txt,其中包含以下文本: Line 1 Line 2 Line 3 Line 4 Line 5 您可以通过运行以下命令将此文件转换为Bash 数组,它将文件内容分配给

49800

一文掌握shell脚本基本语法

/bin/sh linux系统上默认是bash,多数UNIX商业OS中也默认shell。.../bin/bash echo "helloworld" 目前Linux/unix系统中,普遍shell脚本第一行是:#!/bin/sh 或者 #!/bin/bash。...echo $PATH 以冒号分隔目录列表 pwd 当前工作目录 pwd 5.3 自定义变量基本语法 定义变量变量名=变量值,等号两侧不能有空格(与其它语言可设空格区别之处)。...Bash变量:不区分类型,都是字符串,不允许进行数值计算,除非变量中包含数字。 如果变量值中间有空格,则使用引号(单引号或双引号均可)扩起来。 5.4 环境变量 会影响用户接口和shell行为。...双引号 - 如果其中使用了变量,则变量内容也会被替换。 - 如果再次使用引号,则使用转义符。 不用引号 性质和双引号一致,但是字符串不能有空格

3.9K00

awk 进阶使用案例

域 记录中每个单词称做“域”,默认情况下以空格或tab分隔。awk可跟踪域个数,并在内建变量NF中保存该值。...如 awk '{print $1,$3}' test将打印test文件中第一和第三个以空格分开列(域)。 域分隔符 内建变量FS保存输入域分隔符值,默认是空格或tab。...gawk专用正则表达式元字符 一般通用元字符集就不讲了,可参考我Sed和Grep学习笔记。以下几个是gawk专用,不适合unix版本awk。 Y 匹配一个单词开头或者末尾字符串。...分配给数组line是第一个域值,所有记录处理完成后,special for循环将删除每一个元素。...match函数会设置内建变量RSTART为字符串中子字符串开始位置,RLENGTH为到子字符串末尾字符个数。substr可利于这些变量来截取字符串

1.8K20

BashShell字符串

:27 2.3 字符串 ⇔\Leftrightarrow⇔ 数组 ${} 语法默认使用 IFS 指定分隔符分隔字符串(即空白符:空格、tab 符、换行符),默认使用空格连接字符串元素。...str[@]}:得到数组每一个元素下标(each index of elements) 【注】此数组非 Bash Shell 数组变量,只是为了方便理解而称呼,其本质还是单变量Bash Shell...2.4 大小写转换 ${str,,}:将字符串全部转为小写 ${str^^}:将字符串全部转为大写 2.5 字符串分割 bash shell 下将带有特定分隔符字符串分割短字符串数组有很多种方式...2.5.1 直接修改 IFS 环境变量 对于长字符串分隔符不是空白符(IFS 默认分隔符为空白符:即空格、tab、换行符)字符串,可以通过修改 IFS 环境变量来指定字符串分割规则。...bash shell 将其识别为重定向符号;此外,对于 -z 和 -n 选项,字符串必须要用 "" 包裹,不然可能导致奇怪问题,建议 [] 语法中用到字符串变量都用 "" 包裹。

49710

收藏~ 一篇教会你写90%shell脚本

shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell正常运行 变量操作 创建普通变量: name=“test” (=两边不可有空格) 创建只可函数体中使用局部变量: local...name; (删除之后不可访问,删除不掉只读变量字符串变量 1)单引号 单引号变量var='test' ,只能原样输出,变量无效 单引号中不能出现一个单独单引号,转义也不可以 2)双引号 双引号变量...字符串运算符 下表列出了常用字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”: = :检测两个字符串是否相等,相等返回 true。 [ a = b ] 返回 false。 !...cd命令到达该目录,使用pwd获取路径并赋值到path变量 算术运算 $[ ] : 加减乘除,不必添加空格 $(( )) :加减乘除等,不必添加空格 逻辑判断 [ ] : 中括号旁边和运算符两边必须添加空格...获取值 对于类似于下面的BIN=\abs_path``语句,获取是函数体内所有的echo、printf输出组合成一个字符串 abs_path() { SOURCE="${BASH_SOURCE

2.3K10

Shell 编程入门 (转载非原创)

变量命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线 _。 不能使用标点符号。...不能使用bash关键字(可用help命令查看保留关键字)。 2、 使用 使用一个定义过变量,只要在变量名前面加美元符号即可,如: content="hello world!"...2、 for 循环 for 循环即执行一次所有命令,空格进行元素分割,使用变量名获取列表中的当前取值。 示例,顺序输出当前列表中数字: #!...: 字符串不为空" else echo "$a : 字符串为空" fi 5、文件测试运算符 文件测试运算符用于检测 Unix 文件各种属性。.../test.file 3、 标准输入输出 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin文件描述符为0,Unix程序默认从stdin读取数据

1.7K21

一篇教会你写90%shell脚本!

shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell正常运行 变量操作 创建普通变量: name="test" (=两边不可有空格) 创建只可函数体中使用局部变量: local...name; (删除之后不可访问,删除不掉只读变量字符串变量 1)单引号 单引号变量var='test' ,只能原样输出,变量无效 单引号中不能出现一个单独单引号,转义也不可以 2)双引号 双引号变量...字符串运算符 下表列出了常用字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg": = :检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。 !...cd命令到达该目录,使用pwd获取路径并赋值到path变量 算术运算 $[ ] : 加减乘除,不必添加空格 $(( )) :加减乘除等,不必添加空格 逻辑判断 [ ] : 中括号旁边和运算符两边必须添加空格...获取值 对于类似于下面的BIN=\abs_path``语句,获取是函数体内所有的echo、printf输出组合成一个字符串abs_path() { SOURCE="${BASH_SOURCE

1.5K01

高效Shell编程建议及入坑

:取变量和函数要有意义 统一命名风格:由于在bash环境变量名字都是大写,因此建议自己定义变量用小写字母命名,所以写shell一般用小写字母加下划线以防止命名冲突 5)变量和魔数 这里变量有系统变量也有用户自定义变量...13)字符串变量测试比较时候 字符串比较时用 = 而不是 ==,为什么会有这个建议,原文并没有给出详细说明只是简单提了句:== 是 = 同义词,因此仅用个单个 = 来做字符串比较。...描述: 注意在shell脚本中 : 可作为预定义变量使得不将变量字符串作为命令执行; 命令使用1: # 差异查看 : ${VAR1:="Linux"} # 不会将linux字符串当做命令执行只是将其赋值给遍历.../修饰 优先使用bash变量替换代替awk sed,这样更加简短 简单if尽量使用 && || 写成单行。...1、在editplus中“文档->文件格式(CR/LF)->UNIX”,这样Linux下就能按unix格式保存文件 2、在vim中,输入:set ff=unix,同样也是转换成unix格式。

79410

Linux-awk及内置变量

---- awk 内置变量使用 内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录第n个字段,字段间由FS分隔 FS 输入字段分隔符 默认是空格 NF 当前记录中字段个数,...就是有多少列 NR 已经读出记录数,就是行号,从1开始 RS 输入记录他隔符默 认为换行符 OFS 输出字段分隔符 默认也是空格 ORS 输出记录分隔符,默认为换行符 ARGC 命令行参数个数 ARGV...UNIX环境变量 ERRNO UNIX系统错误消息 FIELDWIDTHS 输入字段宽度空白分隔字符串 FNR 当前记录数 OFMT 数字输出格式(默认值是%.6g) RSTART 被匹配函数匹配字符串首...RLENGTH 被匹配函数匹配字符串长度 SUBSEP 数组下标分隔符(默认值是\034) ---- 栗子 以下操作数据来源为/etc/passwd root:x:0:0:root:/root:...awk 'BEGIN{FS=":"}/^root/{print $6,$NF}' /etc/passwd /root /bin/bash FS为字段分隔符,可以自己设置,默认是空格,因为passwd

2K41

Bash 编程

: $ echo "22 / 7" | bc 3 变量 变量用于存储数据,赋值使用等号: chapter_number=5 注意等号两侧不能有空格,这与一般编程语言不同。...例如: math_lines=$(cat math.sh | wc -l) echo $math_lines # 7 带有美元符号变量名也可以在其他字符串中使用,以便将变量值插入到字符串中: echo...Bash语句写法可能与其他语言有所不同,但使用并无差别。 数组 Bash数组是值有序列表 。可以通过将列表赋值给变量名从头创建列表。列表是用圆括号()创建,用空格 分隔列表中每个元素。...函数定义将函数内代码分配给函数名(在本例中是hello)。函数定义后,就可以像其他任何命令一样使用它。使用三次hello命令应该相当于使用三次echo "Hello"。...Unix工具是按照一组指导方针设计,Ken Thompson思想最好地总结了这些指导方针,即每个Unix程序应该做好一件事 。

4.4K30
领券