xld01
2019-07-02 17:10
采纳率: 100%
浏览 437

linux shell的命令识别

#!/bin/bash
for file in "ls /tmp/*"
do
        echo $file
done

这一段代码可以输出tmp下的文件名

#!/bin/bash
for file in "ls"
do
        echo $file
done

可是这样就只会输出ls,想知道shell脚本是如何识别命令和普通字符

菜鸟一只

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 毕小宝 2019-07-02 17:23
    已采纳

    其实不是 ls 的问题,而是文件遍历的问题,第一个代码去掉 ls 也是能正确运行的。

    for file in "/tmp/*"
    do
            echo $file
    done
    

    for 循环必须是遍历一个集合对象。你要想让 ls 生效需要按照命令来执行,换成命令执行符号 Tab 键上面那个符号:

    for file in `ls`
    do
            echo $file
    done
    
    打赏 评论

相关推荐 更多相似问题