我在我的mac上编写了一个shell脚本。以下代码:
echo [objects] > temp.prj
echo $1.obj >> temp.prj
chmod 777 temp.prj
wla-65816 -o $1.asm $1.obj
wlalink -vr temp.prj $1.fig
rm $1.obj
rm temp.prj
问题是程序wlalink给我一个错误信息:
LOAD_FILES:无法打开文件“temp.prj”。
似乎某些权利存在问题。该脚本正在创建一个文件,文件中有正确的内容。与运行sudo相同。
有什么想法吗?
答案 0 :(得分:2)
您所描述的错误听起来并不像shell会产生的错误,但加载该文件的唯一工具是wlalink
。如果您单步执行脚本行,在shell提示符下键入每个行,是否会出现相同的错误?如果是这样,在哪一行?
除此之外,您的脚本存在许多质量问题,您应该修复这些问题,其结果可能会使调试或预测变得更容易。
#!/bin/sh
这样的行作为脚本的第一行。echo '[objects]' > temp.prj
set -e
以获取此版本的简单版本。chmod 777
表示该文件可以被世界读取,写入和执行。这不是可执行文件。它当然不需要是世界可写的。想想你需要什么,并将你的文件权限设置为不超过这个。清理后,尤其是一些基本的错误处理,调试无疑会更容易。
#!/bin/sh
if [ -z "$1" ]; then
echo "ERROR: I need an option." >&2
exit 1
fi
# Debugging
set -e # stop on error
set -x # display our commands
echo "[objects]" > temp.prj
echo "$1.obj" >> temp.prj
chmod 640 temp.prj
wla-65816 -o "$1.asm" "$1.obj"
wlalink -vr temp.prj "$1.fig"
rm -f "$1.obj" temp.prj