qq_40738420
xld01
采纳率100%
2019-07-02 17:10 阅读 422

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条回答 默认 最新

  • 已采纳
    wojiushiwo945you 毕小宝 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
    
    点赞 1 评论 复制链接分享

相关推荐