通常在环境变量中使用目录列表,并用:
(如$PATH
,$LD_LIBRARY_PATH
以及许多其他符号)分隔。
是否有任何工具或标准方法对列表中的每个目录应用命令?
就我而言,我需要检查它们是否存在,但是许多其他命令也很有用,因此我正在寻找一种方法来轻松地在这些列表上进行迭代。
在bash中执行此操作的正确方法是将其分离为数组:
IFS=: read -ra PATHS <<< "$PATH"
for P in "${PATHS[@]}"; do
echo "$P"
done
使用这种形式会使循环内的所有变量分配丢失:
echo "$PATH" | tr : '\n' | while read P; do
ALL=$ALL:$P
done
echo "$ALL" # => empty string
另一个更好的方法是通过:
while read P; do
ALL=$ALL:$P
done <<< "${PATH//:/$'\n'}"
并开始将Bash 3.1ALL=$ALL:$P
简化为ALL+=$P
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句