我正在创建一个名为vpk.sh
的外壳文件,它将帮助我将文件夹(使用从here复制的代码)转换为vpk file,并接受参数;这样使用起来就不会那么困难了。第一个外壳文件是:
#!/bin/bash
DIR=$(dirname "${BASH_SOURCE[0]}")
export LD_LIBRARY_PATH=$(cd "$DIR" && pwd)
exec "$DIR/vpk_linux32" "${@}"
是因为它被保存在本地目录中,因为当从终端和任何位置执行时,它可以与.../vpk.sh "example.vpk"
命令一起正常工作。唯一的小问题是该文件夹将被命名为example.
而不是example
。
我遇到的这个shell代码的问题是全局的而不是本地的,我一直在试图自己解决这个问题,但无济于事,将其保存到/usr/share/bin/vpk
中,这意味着可以在任何给定时间在任何地方执行:
#!/bin/bash
VPK_LINUX=$(find "${HOME}/.local/share/Steam" -type f -iname "vpk_linux32" -print | head -n 1)
VALVE_LIB_DIR=$(dirname "${LINUX_VPK}")
LD_LIBRARY_PATH="${VALVE_LIB_DIR}:${LD_LIBRARY_PATH}" "$VPK_LINUX" "${1}"
但是,当我尝试执行一个名为example
的vpk文件(给出example.vpk
)时,就像终端中的vpk "example.vpk"
一样,它将开始将vpk文件提取到一个提取了其内容的文件夹,但最终仅提取它找到的第一个文件,例如cfg/autoexec.cfg
,但该文件为空而不是其内容,然后立即停止运行,并在以下之后立即输出错误: / p>
/usr/local/bin/vpk: line 5: 3071 Segmentation fault (core dumped) LD_LIBRARY_PATH="${VALVE_LIB_DIR}:${LD_LIBRARY_PATH}" "${VPK_LINUX}" "${1}"
由于不确定LD_LIBRARY_PATH
可能是一个无限循环,所以我不确定正在发生什么,因为我仍在学习shell程序,但是有什么可能使此文件比它做得更好?当前状态?
对于这个听起来令人困惑的问题,我深表歉意,因为这是我第一次在这里提问。