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

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

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

4.4K30

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.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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。 #!

    1K00

    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.7K30

    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.7K50

    Linux 操作系统下的bash read命令

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

    2.4K40

    shell编程知识点集锦

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

    1.6K10

    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.7K20

    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.3K20

    一文掌握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的行为。...双引号 - 如果其中使用了变量,则变量内容也会被替换。 - 如果再次使用引号,则使用转义符。 不用引号 性质和双引号一致,但是字符串不能有空格。

    4.1K01

    嘘……这些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 数组,它将文件的内容分配给

    53300

    【Linux系列】Shell 脚本中的条件判断:``与`]`的比较

    =进行字符串匹配,而[ ]则需要使用=和!=。 空格和引号:[[ ]]对空格和引号的处理更为灵活,即使测试表达式中有空格或引号,也不需要额外的转义。...[[ ]]的优势在于它可以直接处理模式匹配,这使得它在处理字符串时更加方便。 4. 变量和字符串的处理 在 Shell 脚本中,正确处理变量和字符串是非常重要的。...以下是一些最佳实践: 空格:在变量和字符串之间留有空格,可以避免解析错误。例如,"$CURRENT_BRANCH" != "temp_agi_dev"比"$CURRENT_BRANCH"!...双引号:使用双引号来包围变量,可以防止变量为空或包含空格时导致的错误。例如,"$CURRENT_BRANCH"比$CURRENT_BRANCH更健壮。 5....虽然[ ]在所有 Unix-like 系统中都可用,但[[ ]]提供了更多的功能和灵活性,特别是在字符串处理方面。

    10410

    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.9K20

    收藏~ 一篇教会你写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

    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 选项,字符串必须要用 "" 包裹,不然可能导致奇怪的问题,建议 [] 语法中用到的字符串变量都用 "" 包裹。

    51310

    一篇教会你写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.9K01

    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

    高效的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的格式。

    87610

    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
    领券