当你使用:
ls | xargs -I var sh -c 'echo var | awk "{print $0}"'
Run Code Online (Sandbox Code Playgroud)
这有$0双引号因此$0被shell扩展,在这种情况下,它具有sh没有引号的值.awk将其视为变量并打印空白.
为了使它工作逃脱$:
ls | xargs -I var sh -c 'echo var | awk "{print \$0}"'
Run Code Online (Sandbox Code Playgroud)
为什么$1有效:
ls | xargs -I var sh -c 'echo var | awk "{print $1}"'
Run Code Online (Sandbox Code Playgroud)
$1也被shell扩展,它是空的.因此awk只执行一个print等于的空,print $0并在输出中获得文件名.
但是,在双引号中使用awk命令并且解析ls输出容易出错并不是一个好主意.
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |