bash - 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/.
在循环之前添加到每个项目?
解决方案
只需分配"${SELF_PATH_DIR}.${file}"
给一个临时变量或修改相同的变量。
set --
顺便说一句:如果循环是您使用/的唯一地方,$@
那么您可以直接遍历列表:
for file in path alias function; do
file="${SELF_PATH_DIR}.${file}"
[ -r "$file" ] && [ -f "$file" ] && . "$file";
done
推荐阅读
- ssis - 将公共 Google 电子表格中的数据导入 SSIS?
- javascript - 如果每个值有多个,如何根据其值从数组中仅删除一个元素
- c# - WPF:有没有办法在使用 Oblique FontStyle 时避免 TextBox 文本剪辑?
- docker - 轻微的 Docker 构建问题
- python - 我怎样才能让 Flask 等待?
- java - 如何修复将列表的原始值替换为其他可能值的代码?
- android - 如果值为空,为什么查询的 getCount() 会返回 1?
- c - C 中带 pthreads + 信号量的生产者-消费者(同时访问的缓冲区槽)
- asp.net-mvc - 如何将现有剃刀视图中的数据作为参数传递到控制器以加载新的剃刀视图
- javascript - 从 webview 获取 javascript 回调