我不熟悉RPM Package增强/开发和处理安装后脚本。
我想在执行安装后脚本时实现符号链接创建,但却遇到了问题。
脚本执行对于符号链接创建工作正常但是对于升级部分,当我检查“$ RPM_pckg_home / bin”中的符号链接时,虽然命令执行成功但它们没有被创建。
Original_bin_path=/a/b/c
RPM_pckg_home=/d/e/f
if [[ "$1" -eq 1 ]]; then # 1 for install
cd $RPM_pckg_home/bin
for cmd in `ls Original_bin_path` ; do
ln -s $Original_bin_path/${cmd} ${cmd}
done
elif [[ "$1" -eq 2 ]]; then # 2 for Upgrade
cd $RPM_pckg_home/bin
for cmd in `ls Original_bin_path` ; do
rm ${cmd}
ln -s $Original_bin_path/${cmd} ${cmd}
done
fi
请问你能说明问题出在哪里。
答案 0 :(得分:2)
除了可能的错字之外,这就是你应该编写循环的方式:
if [[ "$1" -eq 1 ]]; then # 1 for install
for cmd in "$Original_bin_path"/* ; do
ln -s "${cmd}" "$RPM_pckg_home/bin"
done
elif [[ "$1" -eq 2 ]]; then # 2 for Upgrade
for cmd in "$Original_bin_path"/*; do
rm "${cmd}"
ln -s "${cmd}" "$RPM_pckg_home/bin"
done
fi
不是迭代ls
的输出,而是迭代匹配glob的文件,并修改rm
和ln
命令以适应{的值的变化{1}}。