Linux环境下BASH脚本生成的符号链接全部损坏如何修复?
问题原因
你脚本中创建符号链接时重复拼接了$PWD前缀,导致源文件路径错误:
- 遍历得到的
pathname变量本身已经是完整的绝对路径,再拼接$PWD/会生成无效的嵌套路径,系统找不到对应文件,所以生成的符号链接全部损坏。
修复后的脚本
#!/bin/bash clear shopt -s failglob source="${PWD%/*/*}" workshop="$source/workshop/content/211820" mods="$PWD/mods" mkdir -p "$mods" || exit for pathname in "$workshop"/*/contents*.pak; do name=${pathname#"$workshop"/} name=${name%/*}-${name#*/} # 去掉多余的$PWD前缀,直接用pathname作为源路径 ln -s "$pathname" "$mods/$name" done
验证方法
脚本运行完成后,执行以下命令验证链接有效性:
- 查看链接指向路径是否正确:
ls -l "$mods" - 验证路径可正常解析:
readlink -f "$mods/1234-contents.pak",输出结果如果是实际的contents.pak文件路径即为修复成功。
内容的提问来源于stack exchange,提问作者rattle189
相关产品推荐
相关产品推荐

