首页 > 系统相关 >Linux shell 之 for循环变量有空格的问题——IFS变量

Linux shell 之 for循环变量有空格的问题——IFS变量

时间:2023-06-13 09:35:16浏览次数:44  
标签:字符 shell 变量 IFS newline tab

  • 在使用shell的for循环时,如果循环的字符串中间有空格,那么循环时会自动分割,下面是解决的方法

 

 1 只需要更改 shell分隔符即可
 2 在for循环之前修改IFS变量,示例:
 3 OLDIFS="$IFS"  #备份旧的IFS变量
 4 IFS=$'\n'   #修改分隔符为换行符
 5 
 6 for i in `cat aaa`  #aaa文件中存放着公钥
 7 do
 8 echo "$i"
 9 done
10 IFS="$OLDIFS"  #还原IFS变量
  • 注释:

IFS变量的相关信息:

  1. Shell把变量IFS内的每一个字符都当做是一个分割符(delimeter),用这些字符作为每一个字段的结束符来进行分割。
  2. 如果IFS没有设置,或者IFS的值被设置为"\t\n"(space, tab和 newline),那么操作对象的开始和结束处的所有space, tab和newline序列都将被忽略,但是操作对象中间的space, tab和newline序列会作为界定符工作。
  3. 如果IFS值不是默认值(例如程序中对IFS进行设置过),只有出现在IFS内的空白字符(可能是space, tab或newline中的一个或几个)才会在单词开始和结束处被忽略,这里说的是单词,而不是整个操作对象。
  4. IFS内的非空白字符多个连续出现时,每个非空白字符会被当做单独的分隔符看待,但是多个连续的空白字符会被当做一个分隔符看待。
  5. 如果IFS为空(“null”),则不会进行单词分割。

 

标签:字符,shell,变量,IFS,newline,tab
From: https://www.cnblogs.com/ksky-2023/p/17476598.html

相关文章

  • MacOS-shell-PS1
    导航(返回顶部)1.shell1.1查看当前使用的shell1.2查看系统支持那些shell1.3修改默认的shell解释器2.PS1命令提示符2.1查看当前的PS12.2临时修改PS12.3永久修改PS12.4添加命令序号,时间2.5彩色显示2.6文件类型2.7彩色的命令前缀3.其他3.1增......
  • shell数组的差集
    https://stackoverflow.com/questions/29396154/jq-setdiff-of-two-arrays1.echo-n'{"all":["A","B","C","ABC"],"some":["B","C"]}'|jq'.as$d|.all|del(.[i......
  • shell脚本
    1.运行脚本可以显示出本机的ip地址2.如果ip地址中有3这个数字,那么就打印出当前的系统时间3.如果ip地址中不含3这个数字,就批量建立用户magedu_00,magedu_01,...magedu_100并且所有用户同属于magedu组4.打印出/etc/passwd这个文件中可以登陆的用户(非/usr/sbin/nologin)5.yum......
  • 2020-07-03 java配置环境变量
    java开发,首先要安装JDK,并配置环境1 安装JDK(本人下载的安装包,无脑下一步,选择了下文件夹),安装完成截图如下2 开始配置环境变量右键我的电脑==高级系统设置==环境变量==系统变量中选择新建 (1)JAVA_HOME路径根据自己安装的写,路径到(bin 上一层)例如:笔者的jdk 的bin......
  • Shell脚本_统计当前shell脚本已经运行了几分几秒
    可以使用date命令获取当前时间,再与脚本开始运行的时间进行计算,最后将计算结果转换为分钟和秒数。示例代码:#!/bin/bash#记录脚本开始运行的时间start_time=$(date+%s)#执行脚本的主体代码sleep5#计算脚本已经运行的时间end_time=$(date+%s)elapsed_time=$((end......
  • shell中中括号实现变量运算
     001、[root@PC1test03]#a=100[root@PC1test03]#echo$a100[root@PC1test03]#echo$a+500100+500[root@PC1test03]#echo$[a+500]##中括号可以实现变量运算600[root@PC1test03]#echo$a*3100*3[root@PC1test03]#echo$[a*3]300[root@PC1test03]#......
  • python的shell用法
    python的shell用法python[-bBdEhiIOqsSuvVWx?][-ccommand|-mmodule-name|script|-][args]Python-mpython-mmodule名args检索对应的模块名去执行,对于一个普通的模块,可能下面两种写法实际上是等效的:python-mtestpythontest.py两种写法都是将对应的py文......
  • 常用的webshell管理工具的流量特征 4
    一、菜刀流量特征最开始是明文传输,后来采用base64加密:PHP类WebShell链接流量如下:第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;第二:(base64_decode(POST[z0])),(base64decode(_POST[z0])),(base64_decode(POST[z0])),(base64ecode(_PO......
  • 14-7 shell脚本进阶数组
    一、数组的基本用法关联数组需要先声明[root@centos8~]#declare-adeclare-aBASH_ARGC=()declare-aBASH_ARGV=()declare-aBASH_COMPLETION_VERSINFO=([0]="2"[1]="7")declare-aBASH_LINENO=()declare-aBASH_SOURCE=()declare-arBASH_VERSINFO=([0]=&......
  • 0x03 Go 变量
    变量时程序的基本组成单位,无论是使用哪个编程语言来进行开发,变量都是其程序的基本组成单位.变量表示内存中的一个存储区域,该区域有属于自己的名称(变量名)和类型(变量类型)Golang变量有三种使用方式指定变量类型,声明后若不赋值则使用默认值varnumint//0根据值自行判......