Questions tagged «variable-expansion»

7
Windows命令解释器(CMD.EXE)如何解析脚本?
我遇到了ss64.com,它提供了有关如何编写Windows Command Interpreter将运行的批处理脚本的良好帮助。 但是,我无法找到关于批处理脚本的语法,事物如何扩展或不扩展以及如何逃避事物的很好的解释。 以下是我无法解决的示例问题: 报价系统如何管理?我制作了一个TinyPerl脚本 (foreach $i (@ARGV) { print '*' . $i ; }),对其进行了编译并按以下方式进行调用: my_script.exe "a ""b"" c" →输出是 *a "b*c my_script.exe """a b c""" →输出 *"a*b*c" 内部echo命令如何工作?该命令内部扩展了什么? 为什么必须for [...] %%I在文件脚本中使用,但for [...] %I在交互会话中使用? 什么是转义符?在什么情况下?如何逃脱百分号?例如,如何才能按%PROCESSOR_ARCHITECTURE%字面回显?我发现echo.exe %""PROCESSOR_ARCHITECTURE%可行,是否有更好的解决方案? 如何%配对?例: set b=a,echo %a %b% c%→%a a c% set a =b,echo %a %b% …

30
从Bash中的$ PATH变量中删除路径的最优雅方法是什么?
或更笼统地说,如何从Bash环境变量中以冒号分隔的列表中删除项目? 我以为几年前我已经看过一种简单的方法,可以使用更高级的Bash变量扩展形式,但是如果这样的话,我就会迷失方向。快速搜索Google却发现几乎没有相关结果,而我也称其为“简单”或“优雅”。例如,分别使用sed和awk的两种方法: PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;') PATH=!(awk -F: '{for(i=1;i<=NF;i++){if(!($i in a)){a[$i];printf s$i;s=":"}}}'<<<$PATH) 没有简单的东西存在吗?有什么类似于Bash中的split()函数吗? 更新: 对于我故意含糊的问题,我似乎需要道歉;我对解决特定用例的兴趣不及引起良好讨论的兴趣。幸运的是,我明白了! 这里有一些非常聪明的技术。最后,我在工具箱中添加了以下三个功能。魔术发生在path_remove中,这主要是基于Martin York对awkRS变量的巧妙使用。 path_append () { path_remove $1; export PATH="$PATH:$1"; } path_prepend () { path_remove $1; export PATH="$1:$PATH"; } path_remove () { export PATH=`echo -n $PATH | awk -v RS=: -v ORS=: …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.