运行“读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。