运行“读PATH”后出现“ls:not found”

我想写一个脚本来列出给定的variables的目录。 但是,在将我的input读入variablesPATH后,我根本无法运行ls

 #!/system/bin/sh echo "enter directory for listing" read "PATH" ls "$PATH" -R > list.txt 

这退出:

 ls: not found 

…并且什么都不list.txt

variables名称PATH已被保留用于不同的目的:它列出了search的所有可能的位置,以查找未构build到shell中的命令。

ls就是这样一个命令。 因此,当您更改PATH的值时,您将更改shell尝试查找ls可执行文件的方式; 除非PATH的新值包含一个带有ls可执行文件的目录,否则任何进一步尝试运行ls (或其他未内置到shell中的命令)都将失败。

相反,使用不同的variables名称(最好至less包括一个小写字符),以避免与(全部大写)内build函数和环境variables冲突。


因此,一个更正的forms可能是:

 #!/system/bin/sh echo "enter directory for listing" IFS= read -r path ls -R -- "$path" > list.txt 

请注意,在这种情况下, -R"$path"之前移动 – 而GNU系统将允许可选参数在位置参数之后,许多较早的UNIX系统只会将标志(如-R )视为有效第一个非标志/选项参数之前find。