由于各种原因,我想使用环境变量将多个文件路径传递给我的脚本。我想到了一个想法,即像 is 一样构造变量PATH
,用冒号分隔条目。
经过一些研究之后,我想出了以下技术来迭代名称:
OLD_IFS=$IFS
IFS=":"
# using PATH to demonstrate
for ITEM in $PATH; do
echo hacking $ITEM which comes from $PATH
done
IFS=$OLD_IFS
它看起来运行正常,但我有点担心:
对我来说,操作
IFS
似乎相当尴尬和不雅,并且不可扩展(如果其他人已经在使用怎么办OLD_IFS
?)。输出显示冒号
PATH
被空格替换——该值是否实际上以某种方式暂时改变,或者这只是一个显示怪癖?如果输入变量中有例如,这似乎不会进行通配符
*
;但它真的安全吗?我可能需要防范哪些其他威胁?然后是冒号的问题。虽然我理解
/
UNIX 目录或文件名中的任何字符在技术上都是合法的,但我也理解:
不鼓励这样做,因为它无法逃脱出于 PATH 的目的。但是,我仍然觉得我更喜欢一个完全通用的解决方案。
我是不是错过了更好的选择?我是不是应该在 shell 脚本中忍受这些事情?我更习惯使用 Python 之类的应用程序开发语言,找不到更好的词来形容它,感觉更“常规”。