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

Bash命令展开单引号内变量

问题 我想从一个 bash 脚本中运行一个包含单引号且单引号内有其他命令和一个变量命令。 例如:repo forall -c '.......$variable' 在这种格式中,美元符号 $ 被转义,变量没有被展开。 我尝试了以下几种变化形式,但它们都被拒绝了: repo forall -c '...."...$variable "'" 如果我将变量值直接替换进去,命令就能正常执行。 请告诉我哪里出了错。 回答 单引号内,所有内容都会被原样保留,无一例外。...不要拼接由 Shell 解析字符串 你应绝对避免通过拼接变量来构建 Shell 命令。这和 SQL 片段拼接(导致 SQL 注入)一样是个坏主意!...通常情况下,可以命令中设置占位符,并将命令变量一起提供,以便调用者能从调用参数列表中接收它们 例如,以下做法非常不安全。

6510

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提供了更简单语法来实现上面的功能...://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Pattern-Matching 使用示例: ## 替换所有数字U $ str...《Shell-Parameter-Expansion(Shell参数展开)》章节 https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html...#Shell-Parameter-Expansion 上面只是《Shell参数展开》一小部分功能应用示例, 关于《Shell参数展开》官方文档中提供了远比上面内容更丰应用方式,建议看看原文档你能找到更多有用技巧

3.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

转载:(Mac)bash和zsh配置环境变量path几种方法

作为默认shell Linux 里执行这个命令和 Mac 略有不同,你会发现 Mac 多了一个 zsh,也就是说 OS X 系统预装了个 zsh,这是个神马 Shell 呢?...2.正文 2.1 bash中设置环境变量path几种方法 Mac系统环境变量,加载顺序: /etc/profile /etc/paths ~/.bash_profile ~/.bash_login...默认情况下,他设置一些环境变量 设置命令别名alias ll=’ls -la’ 设置环境变量: export PATH=/opt/local/bin:/opt/local/sbin:$PATH 2)...2.2 解决 Mac 下配置环境变量 ZSH 中无效问题 配置 gradle 时候, 发现在 /etc/profiles 中设置了环境变量后, 还是不能在 zsh 中使用....可以看到当前 zsh 支持所有本地已配置环境变量. export PATH=”XXXX” 里面追加一条想要配置环境变量路径. 重启 item2 即可。

2.6K20

我可以不source脚本情况下将变量Bash脚本导出到环境中吗

echo $VAR 有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR? 答: 不可以。 但是有几种可能解决办法。...调用 shell 上下文中执行脚本: $ cat set-vars1.sh export FOO=BAR $ . set-vars1.sh $ echo $FOO BAR 另一种方法是脚本中打印设置环境变量命令.../set-vars2.sh)" $ echo "$FOO" BAR 终端上执行 help export 可以查看 Bash 内置命令 export 帮助文档: # help export export...-f 指 shell 函数 -n 从每个(变量)名称中删除 export 属性 -p 显示所有导出变量和函数列表 ---- 参考: stackoverflow question 16618071...help eval 相关阅读: 用和不用export定义变量区别 shell编程中$(cmd) 和 `cmd` 之间有什么区别 ----

14420

Shell 编程(2)- 变量

例如,常见cd、ls等命令严格来说应该使用绝对路径如/bin/ls来执行,由于/bin目录加入到了PATH环境变量中,系统自己会去寻找PATH下路径是否有该命令。 环境变量常用大写字母表示。...exit #退出子 shell export str #父 shell 中将普通变量修改为环境变量 bash echo $str Hello 变量生命周期 普通变量脚本结束或退出登录后就失效了,并别只对当前...shell 其他基础 1.变量赋值 ${parameter:-word}:如果 parameter 空或未定义,则变量展开“word”;否则展开 parameter 值 ${parameter-word.../etc/init.d/http.d 中有此用法 ${parameter:+word}:如果 parameter 空或未定义,不做任何操作,即仍然空;否则展开 "word" 值 ${parameter...:=word}:如果 parameter 空或未定义,则变量赋值(注意不是展开"word";否则为 parameter 本身 ${parameter:offset}:取子串,从offset处后一个字符开始取到最后一个字符

78500

bash基础特征

, ignorespace; 2.命令补全 用户键入一部分命令后,按下Tab键,bash根据PATH环境变量定义路径,自左而右每个路径搜寻以给定命令名命名文件,第一次找到即为要执行命令。..., 使用方式与命令补全一致:路径惟一时,按Tab自动补全,不惟一时,再次按Tab,显示路径列表 4.命令展开 ~: 展开用户主目录 ~USERNAME:展开指定用户主目录 {}:可承载一个以逗号分隔列表...,并将其展开多个路径 /tmp/{a,b} = /tmp/a, /tmp/b /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi [root@senlong...bash使用特殊变量$?...# 显示上一条指令执行结果 2 bash快捷键 Ctrl+l: 清屏,相当于clear命令; Ctrl+a:跳转至命令开始处; Ctrl+e:跳转至命令结尾处; Ctrl+c:取消命令执行; Ctrl

34520

Bash 编程易错总结大全

(花括号展开变量替换、命令展开等)功能中最后一个环节,所以不会有之前不带引号命令展开副作用。...这个例子以下情况下会出错: 如果 [中变量不存在,或者空,这个时候上面的例子最终解析结果是: [ = "bar" ] # 错误 !...if 是一个复合命令,它包含其它命令,[并不是 if 语法中一部分。...: event not found 这是因为,默认交互式 Shell 环境下,Bash 发现感叹号时会执行历史命令展开 Shell 脚本中,这种行为是被禁止,所以不会发生错误。...控制 shell 展开顺序,命令行历史展开单词拆分之前执行 # 参见:Bash man 手册History Expansion一节 exmark='!'

2.8K10

【Unity3D 灵巧小知识点】 ☀️ | 层级面板中 ‘小手指‘ 作用: Scen中将该物体设置不可选中状态

Unity 平台提供一整套完善软件解决方案,可用于创作、运营和变现任何实时互动2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。...也可以简单把 Unity 理解一个游戏引擎,可以用来专业制作游戏!...---- Unity小知识点学习 层级面板中 ‘小手指’ 作用: Scen中将该物体设置不可选中状态 层级面板中有一个小手指一样图标(我也不知道官方叫啥~) 当我们给物体选上之后,...他就会变成一个禁止状态,就是上图中Plane物体前面那个样子 正常没选中时候就是Cube前面那个样子图标,点一下就会选中!...小手指作用就是,当我们点了这个小手指,成为一个斜杠似的禁止状态时 Scene场景中我们就没法通过鼠标来选中这个物体了 ! 演示效果: ----

2.2K31

第三十五章 : 字符串和数字

除了算术展开第七章中接触过),还有一个常见命令行程序叫做 bc,能执行更高级别的数学运算。...尽管参数展开在第七章中出现过,但我们并没有详尽地介绍它,因为大多数参数展开会用在脚本中,而不是命令行中。我们已经使用了一些形式参数展开;例如,shell 变量。shell 提供了更多方式。...根据 bash 文档,这两种展开形式执行结果相同。这里,我们列出了所有以 BASH 开头环境变量名: [me@linuxbox ~]$ echo ${!...这些展开会从 paramter 所包含字符串中清除开头一部分文本,这些字符要匹配定义 pattern。pattern 是通配符模式,就如那些用在路径名展开模式。...最新 bash 版本已经支持字符串大小写转换了。bash 有四个参数展开和 declare 命令两个选项来支持大小写转换。

29210

拥有此神技,脚本调试从此与 echo、set、test 说分手!

但脚本中调用这些命令都是被模拟出来,用于模拟对应真实命令行为。这样,我们 Bash 脚本单元测试中就避免了很大一部分外部依赖,而且测试执行速度也不会受到真实命令影响了。...比如 Bash 脚本中使用了只有 GNU/Linux 上才有的命令,对应单元测试也可以 Windows 或者 macOS 上执行,且结果一致。 怎样 Bash 脚本写单元测试?...由于操作系统和 Bash 一些限制,Bach Testing Framework 无法做到: 拦截使用绝对路径调用命令 事实上我们应该避免 Bash 脚本中使用绝对路径,如果不可避免要使用,我们可以把这个绝对路径抽取一个变量...在这个实现中,变量 $1 就没有用双引号,这会带来严重后果。下面我们将使用 @touch API 来创建几个文件,其中将有一个文件名中含有特殊字符 文件 bar。...,期望只删除文件bar,但是函数 cleanup里面,因为遗漏了双引号,会导致变量被二次展开

1K20

第三十六章 : 数组

这里我们看到一个赋值并访问数组元素例子。通过第一个命令,把数组 a 元素1赋值 “foo”。第二个命令显示存储元素1中值。...第二个命令中使用花括号是必需,以便防止 shell 试图对数组元素名执行路径名展开操作。...这个脚本由一个函数(名为 usage),和一个分为四个区块主体组成。一部分,我们检查是否有一个命令行参数,且该参数目录。如果不是目录,会显示脚本使用信息并退出。...通过使用花括号展开({0..23}),我们能很容易 for 命令产生一系列数据(words)。...如果我们 bash 手册页中搜索单词 “array”的话,我们能找到许多 bash 在哪里会使用数组变量实例。其中大部分相当晦涩难懂,但是它们可能在一些特殊场合提供临时工具。

45000

深入了解定制 Bash | Linux 中国

这一步执行别名展开。 将标记解析成简单与复合命令。 执行各种 shell 展开...,将展开之后标记分解成文件名...以及命令和参数列表。...它是系统上命令搜索路径。注意,有些应用要求将它们自己目录加入 PATH 变量,这样才能正常使用。跟 CDPATH 一样,通过赋值右侧引用原值来追加新值到 PATH 变量。...PS0:这个参数值像 PS1 一样展开交互式 shell 读取命令之后、执行命令之前展示。 PS1:主提示符字符串。默认值是 \s-\v\$ 。 PS2:次提示符字符串。默认是 > 。...显示之前,PS2 像 PS1 那样展开。 PS3:这个参数值用作 select 命令提示符。如果这个变量没有设置,select 命令会用 #? 作为提示符。...PS4:这个参数值像 PS1 那样展开,如果设置了 -x 选项,这个展开值会在命令行被回显之前作为提示符显示。展开第一个字符必要时会复制数次,指示间接层数。默认值是 + 。

1.1K30

SHELL编程基本知识点一

.作为文件名一部分.如果作为文件名前缀的话,那么这个文件将成为隐藏文件. .命令如果作为目录名一部分的话,那么.表达是当前目录.".."...表示上一级目录. .字符匹配,这是作为正则表达是的一部分,用来匹配任何单个字符. " 部分引用" " 可引用除$、` 、\ 、外任意字符或字符串," "中变量能够正常显示变量值....:"命令是一个 bash 内建命令,它返回值 0,就是 shell 返回 true. 如: : echo $?...取反操作符,将反转"退出状态"结果.也会反转 test 操作符意义.比 如修改=!=.!操作是 Bash 一个关键字. 一个不同上下文中,!也会出现在"间接变量引用"....alias when=while 4、执行大括号展开,比如h{a,i}t展开hat或hit。 5、将单词开头处波浪号(~)替换成用户根目录$HOME。

91620

教你写出健壮可靠shell脚本!

语法检查 第一个最简单方法就是利用工具对脚本进行检查,这一部分已经《有了这个神器,再也不怕shell写不对了》中介绍过了,它能最大程度地发现shell脚本中存在语法错误,如果你还不知道,建议你绝对不要错过...-le 1 ] + echo no para no para 前面带+内容就是命令实际执行,你可以看到比较条件是什么,变量展开成了具体内容,走到了哪个分支,非常清楚。...显示未定义变量 shell中变量没有定义,仍然是可以使用,但是它结果可能不是你所预期。举个例子: //来源:公众号【编程珠玑】 //作者:守望先生#!.../bin/bash if [ "$var" = "abc" ] then echo " not abc" else echo " abc " fi 这里本来想判断var内容是否abc...给变量设置可选初始值 例如: name=${1:-shouwang} echo "${name}" 这里让name$1,即第一个参数,而当它为空时,令nameshouwang。

2.5K10

为什么要用fish shell

体现在一些标识符,一些命令扩展和易用上。 1.1 单引号和双引号 fish这里对待单引号和双引号方式和bash不太一样。fish对待两种引号区别:能不能进一步展开$变量。双引号可以,单引号不可以。...image.png 另一这里其实还有个大括号,{$PATH}xxx,这里$PATH是个列表变量,他和xxx形成笛卡尔积,也就是展开成[PATH1xxx,PATH2xxx,…,PATHnXXX] 1.2...Bash是2>, fish也可以使用^,但是新版本fish已经遗弃了 另外在file前追加?代表操作之前先判断该文件存不存在。...二、更强大功能 2.1 改变当前工作路径 除了常规Cd、pwd(print working dir),fish还扩展了以下关于工作路径相关命令: . / ~都不是一个有效字符,所以命令中都可以看做特殊符号来对待...(这个是bash一个大短板) 每个命令都可以用tab提示。错误命令能够被友好提示,并给出可能正确建议 image.png

2.2K591
领券