linux把标准输出赋值给变量遇到的问题
2016-08-24 19:45
190 查看
问题起因:
例如执行ip命令,通过grep和awk组合命令得到如下结果
eth1
eth2
tap1
tap2
需求:现在我想把每一行作为一个变量来使用,可以做到把网卡down掉,例如ifconfig eth1 down
解决方法之一:
先把标准输出赋值个一个变量,然后用for in遍历这个变量
这两条的输出结果不一样,区别在于是否有换行.这是为什么呢?
这里涉及到shell的IFS内部域分隔符也就是space,tab,newline
实例
所以说这块的知识很微妙,是个大坑,而我至今仍在坑中望天而叹。
还有一个问题就是ovs-vsctl show显示网桥,有的网桥名称会有双引号,这是什么原因????
经试验发现带有特殊字母的网桥名称会被双引号括起来,真是有趣啊
ovs-vsctl list-br
列出所有ovs网桥
a=$(ovs-vsctl list-br)
其实我最想知道的是分隔符是否参与了循环,如图所示,当给$a加上双引号在for中循环的时候分隔符确实参与了循环
例如执行ip命令,通过grep和awk组合命令得到如下结果
eth1
eth2
tap1
tap2
需求:现在我想把每一行作为一个变量来使用,可以做到把网卡down掉,例如ifconfig eth1 down
解决方法之一:
先把标准输出赋值个一个变量,然后用for in遍历这个变量
a=$(ip link show|grep |awk) for i in $a do ifconfig $i down done
echo $a echo "$a"
这两条的输出结果不一样,区别在于是否有换行.这是为什么呢?
这里涉及到shell的IFS内部域分隔符也就是space,tab,newline
$ echo "$IFS" | od -b 0000000 040 011 012 012 0000004 要想理解这些还得知道一个概念 引用符、名称、意义说明表 引用符 名称 意义说明 '' 单引号 称全引用或弱引用,引用所有的字符;单引号中字符除单引号本身之外都解释为字面意义,单引号不具备引用变量的功能。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外。 "" 双引号 称部分引用或强引用,引用除美元符号($)、反引号(`)和反斜线(\)之外的所有字符。即在双引号中保持美元符号($)、反引号(`)和反斜线(\)符号的特殊含义,如"$变量名"表示以变量值替换变量名。利用双引号引用变量能够防止字符串分割,保留变量中的空格。 `` 反引符 shell把反引符中的内容解释为系统命令 \ 反斜杠 转意符,屏蔽下一个字符的特殊意义,Linux常用的特殊字符有$、*、`、+、^、&、|、"、?
实例
a=$(ip link show)
echo $a echo "$a"
echo $IFS|od -b
echo "$IFS"|od -b
所以说这块的知识很微妙,是个大坑,而我至今仍在坑中望天而叹。
还有一个问题就是ovs-vsctl show显示网桥,有的网桥名称会有双引号,这是什么原因????
经试验发现带有特殊字母的网桥名称会被双引号括起来,真是有趣啊
ovs-vsctl list-br
列出所有ovs网桥
a=$(ovs-vsctl list-br)
for i in $a do ovs-vsctl del-br $i done
其实我最想知道的是分隔符是否参与了循环,如图所示,当给$a加上双引号在for中循环的时候分隔符确实参与了循环
相关文章推荐
- Linux 标准输出重定向 缺失的问题
- 有关linux标准输出、标准输入、标准错误的重定向问题
- 将 Linux 命令的输出赋值给变量的方法
- 数组push之后赋值给新变量之后输出为数字问题
- 使用printf修改变量的值 —— VS2008中使用%n输出遇到的问题及解决方法
- 如何将 Linux 命令的输出赋值给变量
- Linux shell脚本中执行命令结果赋值给变量&&echo输出变量是否包含换行符的问题
- 小问题:linux下printf中标准输出显示问题
- 遇到的问题-----------定义一个全局变量,在page_load里赋值,但在其他按钮中调用仍为空
- 怎么把标准输出的内容赋值给一个shell变量
- 遇到问题-----------getJSON为什么不能给外部变量赋值?或者getJson赋值无效
- linux安装jdk,设置环境变量遇到的一个奇葩问题
- 使用printf修改变量的值 —— VS2008中使用%n输出遇到的问题及解决方法
- 遇到的问题-----------定义一个全局变量,在page_load里赋值,但在其他按钮中调用仍为空
- shell 脚本中将输出内容赋值给一个变量时的换行问题
- linux中的for、while循环输出中赋值变量及shell中循环获取脚本参数
- go和python变量赋值遇到的一个问题
- grep查询文本:问一个简单shell问题,将grep的输出赋值给一个变量
- shell脚本标准输出赋值给变量
- js 中局部变量和全局变量输出遇到的问题