linux shell的命令识别

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脚本是如何识别命令和普通字符

菜鸟一只

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

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

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

for file in `ls`
do
        echo $file
done