我想弄清楚如何对多个项目执行命令。例如:
我的命令文件A; 我的命令文件B; 我的命令文件C;
我可以这样做:
文件=(文件A文件B文件C) 对于 $files 中的 fl; 我的命令 $fl
当我尝试内联它时,它失败了:
$for fl in (fileA fileB fileC); 回声 $fl zsh:无效的模式规范
这在 zsh 中可能吗?我浏览了阵列手册,但没有提到如何做到这一点。
mpy*_*mpy 12
$for fl in (fileA fileB fileC); echo $fl
Run Code Online (Sandbox Code Playgroud)
在这里,(被解析为Glob Qualifier的开头,就像在ls *(a+2).
限定符f代表具有匹配规范的访问权限的文件,这就是为什么您会收到错误无效模式规范,因为ileA不是有效的访问权限规范。
如果你尝试例如$for fl in (anotherfileA fileB fileC); echo $fl你得到zsh: number expected,因为a限定符是按访问时间选择的。等等...
那么,如何正确操作呢?-- 在zsh 中,for循环有两种可能的语法:#
第一个在手册页中描述:
for name ... [ in word ... ] term do list done
Run Code Online (Sandbox Code Playgroud)
因此,正如@SadBunny已经指出的那样,您示例的正确语法是
for fl in fileA fileB fileC; echo $fl
Run Code Online (Sandbox Code Playgroud)数字 2 适用于像我这样的懒人(计算击键次数;)),记录在复杂命令的替代形式部分man zshmisc:
for name (word ...) { cmd1; cmd2; }
Run Code Online (Sandbox Code Playgroud)
通过省略卷曲的刹车,可以简化循环体中只有一个命令:
for fl (fileA fileB fileC) echo $fl
Run Code Online (Sandbox Code Playgroud)
恕我直言,这种形式有两个主要优点:
for fl (fileA fileB fileC) mycommand $fl以及for fl ($files) mycommand $fl- 文字值或变量的相同语法。#不计算算术的循环形式for (( [expr1] ; [expr2] ; [expr3] )) do list done
| 归档时间: |
|
| 查看次数: |
6756 次 |
| 最近记录: |