首页 > 解决方案 > POSIX 数组和循环

问题描述

我如下创建一个文件数组,然后“获取”这些文件。我也在尝试使脚本尽可能接近 POSIX,这样我在不同的 shell 中运行它就不会出现问题。

set -- path alias function
for file in "${@}"; do
    [ -r "${SELF_PATH_DIR}.${file}" ] && [ -f "${SELF_PATH_DIR}.${file}" ] && . "${SELF_PATH_DIR}.${file}";
done

它有效,但我不喜欢我必须${SELF_PATH_DIR}.多次指定的事实,以便字符串采用文件的真实路径(/Users/karlsd/dotfiles/.path等)。

有没有办法让它变得更简单?例如,/Users/karlsd/dotfiles/.在循环之前添加到每个项目?

标签: bashloopsposix

解决方案


只需分配"${SELF_PATH_DIR}.${file}"给一个临时变量或修改相同的变量。

set --顺便说一句:如果循环是您使用/的唯一地方,$@那么您可以直接遍历列表:

for file in path alias function; do
    file="${SELF_PATH_DIR}.${file}"
    [ -r "$file" ] && [ -f "$file" ] && . "$file";
done

推荐阅读