linux变量转义,关于linux:在Bash变量中转义awk参数
我想将awk命令存储在一个变量中,以便稍后在自动脚本中使用。
如何在变量中存储命令?
AUTO_SCRIPT="cp a b"
如何运行存储的命令?
$AUTO_SCRIPT
现在,我要在此脚本中存储awk命令:
awk -v par="eth0" '/^iface/ && $2==par {print}' /etc/network/interfaces
(此awk通常会打印类似iface eth0 inet dhcp的内容。
所以我想把它存储起来以便以后执行:
AUTO_SCRIPT="awk -v par="eth0" '/^iface/ && $2==par {print}' /etc/network/interfaces"
但是,在尝试执行时:
$AUTO_SCRIPT
awk: cmd. line:1: '/^iface/
awk: cmd. line:1: ^ invalid char ''' in expression
我试过什么?几乎所有的事情。用字符转义撇号。使用Qoute字符而不是撇号。尝试使用(和)字符等。没有效果。
我需要一些好主意。
参见bashfaq 50:我试图在变量中放置一个命令,但是复杂的情况总是失败的!正如它所说,"变量保存数据。函数保持代码。不要把代码放在变量中!"根据您实际尝试完成的工作,常见问题解答中列出了许多备选方案。
摆脱使用所有大写字母的习惯。太容易覆盖敏感变量,如path。
另请参见pubs.opengroup.org/onlinepubs/9699919799/basedefs/…,第四段,建立环境和shell变量所用的所有caps名称,这些变量对shell或posix定义的工具有意义,并为应用程序保留至少一个小写字符的名称:为自己的变量使用小写名称不仅仅是一个好方法。想法,它实际上被供奉在POSIX中。
不要将命令保存在变量中,没有理由这样做,因为这样做既笨拙又容易出错。只需创建一个调用awk脚本的shell函数。例如($是我的提示):
$ auto_script() { echo 'hello world'; }
$ auto_script
hello world
只需对awk脚本执行相同的操作:
auto_script() { awk -v par='eth0' '/^iface/ && $2==par' /etc/network/interfaces; }
将命令放入函数中是最干净的解决方案。另一种解决方案是将命令放入数组中。
auto_script=( awk -v par="eth0" '/^iface/ && $2==par {print}' /etc/network/interfaces )
然后像这样执行
"${auto_script[@]}"
请阅读提供给您的bashfaq 50链接。
除非使用其他类似于数组的机制,否则看起来您不能这样做。
当调用$AUTO_SCRIPT时,shell按空白分割内容,产生以下参数:awk、-v、par=\"eth0\"、'/^iface/、&&、$2==par、{print}'、/etc/network/interfaces。因此,awk(1)无法运行正确的程序,因此会出现错误。
阅读问题注释中的bash faq链接。
@格伦纳扎克曼谢谢。我没有考虑过阵列;)
linux变量转义,关于linux:在Bash变量中转义awk参数相关推荐
- win10复制粘贴linux,如何在Windows 10的Bash Shell中启用复制和粘贴键盘快捷键 | MOS86...
Windows 10s Bash shell终于有了方便的复制和粘贴键盘快捷键,但是出于兼容性原因,默认情况下将它们禁用. 这些快捷方式在2018年10月更新中可用,该更新最初代号为Redstone ...
- Linux学习总结(70)——Bash 脚本中常用的内置变量汇总
一.$FUNCNAME.$LINENO.$PWD FUNCNAME 表示当前函数的名字,作用范围仅限函数中使用,在函数外无值 LINENO 表示当前所在脚本中变量出现在的行号 PWD 表示当前目录, ...
- linux shell eval,【shell】bash shell 中 set 和 eval 命令的使用
set命令 https://man.linuxde.net/set Bash 脚本 set 命令教程 http://www.ruanyifeng.com/blog/2017/11/bash-set.h ...
- Linux Bash Shell中的特殊参数含义
2019独角兽企业重金招聘Python工程师标准>>> $n 脚本的第n个参数值,n=0,1, 2, ... 9 $* 这个程式的所有参数,作为一个字符串返回 $@ ...
- java中string中转义_如何在String.Format中转义%?
我将SQL查询存储在我的strings.xml文件中,并且我想使用String.Format在代码中构建最终的字符串. SELECT语句使用like,如下所示: SELECT Field1, Fiel ...
- C#格式化字符串中转义大括号“{}”
C#格式化字符串中转义大括号"{}" 原文:C#格式化字符串中转义大括号"{}" 今天,用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用S ...
- 在 Java 中转义 HTML
本文介绍如何在 Java 中转义 HTML 字符和符号.我们可以使用 Apachecommons-text和StringEscapeUtils.escapeHtml4(str)方法来转义 Java 中 ...
- linux shell 获取环境变量,bash shell中的环境变量
环境变量--bash shell使用环境变量来存储系统相关数据,并允许将数据存储在内存中. 环境变量分为:全局环境变量 本地环境变量 目录全局环境变量 本地环境变量 设置全局环境变量 删除环境变量 P ...
- 沈超+shell课件_[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量.ppt...
[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量 第十讲 Shell基础 主讲人:沈超(/lampsc) 交流论坛: 课程大纲 10.1 Shell概述 1 ...
最新文章
- Kettle连接HiveServer2配置和常见问题解决
- Java开发者跳槽必备:2021阿里Java面试题目大汇总
- 技术分享连载(六十)
- 干货丨深度迁移学习方法的基本思路(文末送书)
- 明日之后抄袭rust_古人怎么抄袭?何法盛偷窃原著,宋之问压杀外甥,班固参考史记...
- android listview 异步加载图片并防止错位
- leetCode-995:K 连续位的最小翻转次数
- 计算机工程师专用小工具,204个联想工程师专用小工具合集
- hg8245设置无线打印服务器,小编教您设置华为HG8245光纤猫路由器
- 使用TestNG-abbot测试GUI
- 基于单片机的电子万年历的设计
- PLC基础——1.自保持回路
- 微信小程序Unhandled promise rejection TypeError
- Win系统 - 如何查看电脑开机了多长时间?
- 7、任务分配-任务分派其他人
- 数千亿“颜值经济”蓝海里,买单的究竟是哪些人?
- 【嵌入式】STM32实现SPI双机通信的一些细节(2)片选总结
- 为网站添加视频、音乐
- blt功能_C++中BitBlt的使用方法详解
- 【大学物理·静止电荷的电场】电容器的电容
热门文章
- vr降噪器英文是什么_什么是VR体验馆设备?
- 基于stm32简易计算机电路图,基于STM32的简易电子计算器设计与实现(DOC).doc
- android 前台服务自定义布局不显示_Android自定义LinearLayout布局显示不完整的解决方法...
- Android开发之打开QQ聊天页面的方法
- java给qq发消息_QQ发送消息
- java实现c#的datetime.ticks_java的Date.getTime()转换成C#的Datetime.ticks | 学步园
- vc连接mysql 查询_vc连接数据库中查询代码如何写呀 急急急!!!!!!
- linux中su命令源码,Linux-命令-su
- 用计算机怎么录资料,如何在短时间内快速录入大量数据 -电脑资料
- mysql group_concat