数组 – Csh向数组添加字符串,空白麻烦
发布时间:2020-12-15 18:57:57 所属栏目:安全 来源:网络整理
导读:我在使用csh做一些基本的事情时遇到了麻烦.我有一个字符串: set newCmd = "$expansionCmd –option1 –option2 …" 我正在创建这些字符串的数组,我后来想要执行它们: set expansionCmdList = ($expansionCmdList[*] "$newCmd") #I also tried without quot
我在使用csh做一些基本的事情时遇到了麻烦.我有一个字符串:
set newCmd = "$expansionCmd –option1 –option2 …" 我正在创建这些字符串的数组,我后来想要执行它们: set expansionCmdList = ($expansionCmdList[*] "$newCmd") #I also tried without quotes,e.g. just $newCmd 最后我尝试迭代并执行这些命令: foreach exCmd ($expansionCmdList) `exCmd` #execute it in the shell end 但是问题是数组条目不是完整的字符串,而是字符串的每个部分用空格分隔,即第一个条目只是“$expansionCmd”,下一个条目是“-option1”等. 为使用c shell提前道歉,我公司的代码库坚持使用它.
无论何时扩展整个数组并希望保持其各个元素的身份完整,您需要在扩展上使用:q修饰符.否则,只要执行类似设置expandCmdList =($expansionCmdList [*]“$newCmd”)的操作,列表中的所有先前命令就会被拆分为它们的组件字,每个组件字现在都是它自己的数组元素.简单演示:
% set a = ( a "b c" d ) % echo $a[2] b c % set a = ( $a[*] e ) % echo $a[2] b 糟糕,你甚至在进入执行循环之前搞砸了数组.事情变得更好:q: % set a = ( a "b c" d ) % set a = ( $a:q e ) % echo $a[2] b c 您需要在for循环中使用相同的修饰符: foreach exCmd ($expansionCmdList:q) 最后,`exCmd`尝试运行一个名为“exCmd”的命令.你想做的是 $exCmd (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |