2

我有简单的 bash 命令需要放入 shell:

 `for f in $(ls); do echo "File -> $f"; done`

我得到的是:

-bash: File: command not found

我不明白为什么 bash 试图执行 echo 语句而不是打印它......

4

4 回答 4

3

不应该真正解析ls这个。执行以下操作:

for f in *; do echo "File -> $f"; done

对于目录:

for i in *; do if [ -d $i ]; then  echo "File -> $i"; fi ; done

或者

find . -type d -exec echo '{}' \;
于 2013-06-10T13:21:11.837 回答
3

反引号导致执行。反引号内的命令输出一个字符串,反引号将该字符串作为命令执行。

于 2013-06-10T13:23:20.197 回答
2

为什么不$(find . -mindepth 1 -maxdepth 1 -type d ! -name index -printf '%f/* ')呢?

  • 没有循环的shell代码
  • 输入端没有转义问题
  • 便携的
于 2013-06-10T14:39:53.867 回答
1

我在sh模式下使用它,工作正常。在命令的开始和结束时移除背杆,它会起作用。

于 2013-06-10T13:29:46.027 回答