linux - 这个命令(shell代码)问题有什么解决方案吗
问题描述
我有一些shell代码看起来像:
while read line; do echo $line; done < (ls -la $path)
但是,得到一个错误“ -bash: syntax error near unexpected token `(' ” 我无法修复它。我知道管道命令也可以做得很好。喜欢
ls -la $path | while read line; do echo $line; done
但实际上我希望在循环中做一些事情,比如改变全局值
while read line; $((count++)); done
并且管道没有工作。
解决方案
进程替换的正确语法是:
while read line; do echo $line; done < <(ls -la $path)
但无论如何,这样做根本不是一个好主意,请改用 for 循环:
for fname in "$path"/* "$path"/.*; do
echo "$fname"
done
如果您需要在循环中获取有关文件的信息,请使用stat。
推荐阅读
- java - 有没有办法在 android studio 项目中找到服务器的端口?
- vue.js - Vue.js 动态组件渲染“无法解析指令”
- regex - 下面两个代表0到100的正则表达式有什么区别?
- javascript - 多维 javascript 数组仅影响 forEach 中的最后一个数组
- react-native-navigation - SideMenu 布局示例 react-native-navigation v2
- c++ - 如何遍历几个小时的 ROOT (.root) 文件并将它们组合成更大的每日数据 .root 文件?
- asp.net - 除了 Owin 之外,还有其他东西可以作为中间件进行身份验证吗?
- python - Pyspark - 加载 ML 模型时出错
- spring - 在已安装并运行 Tomcat 时使用 Spring Framework Web
- c# - LINQ 查询将对象的两个值与列表进行比较,其中两个对象必须匹配