我有一个用 bash 编写的简单脚本,用于从 zsh 的官方 github 的 repo 中提取最新的更改并构建它。
我还有另一个脚本(仍然是 bash),它调用这个脚本和其他脚本。
另外,我还有另一个(这次用 python 编写的)来调用第二个脚本。
我注意到自昨天以来它没有给我这种错误,但现在在中间点我得到了这个:
(eval):print:4: write error: broken pipe
(eval):4: write error: inappropriate ioctl for device
按照相同顺序重复约10次。
仅当它被从 python 脚本调用的第二个脚本调用时才会发生这种情况。
如果我直接调用它,或者第二个脚本确实调用了它,但它本身并没有从 python 脚本中调用。
另外,我想说明一下,我不是 shell 脚本方面的专家,我无法更改编译 zsh 所需的内部工具中的内容。
这是 zsh 脚本:
#!/bin/bash
if [[ $EUID > 0 ]] ; then
echo "You need to be root for this script."
exit
fi
cd ~/Desktop/zsh
git pull origin master
./configure --prefix=/usr \
--mandir=/usr/share/man \
--bindir=/bin \
--infodir=/usr/share/info \
--enable-maildir-support \
--enable-etcdir=/etc/zsh \
--enable-function-subdirs \
--enable-site-fndir=/usr/local/share/zsh/site-functions \
--enable-fndir=/usr/share/zsh/functions \
--with-tcsetpgrp \
--with-term-lib="ncursesw" \
--enable-cap \
--enable-pcre \
--enable-readnullcmd=pager \
--enable-custom-patchlevel=Debian \
LDFLAGS="-Wl,--as-needed -g"
make
make check
sudo make install
sudo make install.info
这是第二个:
#!/bin/bash
if [[ $EUID > 0 ]] ; then
echo "You need to be root for this script."
exit
fi
echo "Building zsh."
build-zsh
clear
echo "Done building zsh, moving on to ssh."
build-ssh
clear
echo "Done building ssh, moving on to nmap."
build-nmap
clear
echo "Done building nmap."
echo "End of the script."
这是 Python 脚本:
#!/usr/bin/env python3
import os
if os.geteuid() != 0:
exit("You need root privileges to run this script.")
comando = "apt-fix -y && apt-get update && apt-get -y upgrade && apt-get -y full-upgrade && apt-get -y dist-upgrade && \
apt-file update && apt -y autoremove --purge && apt -y clean"
spegnere = input ("Do you wish to turn shutdown after the process is completed? (y/n) ")
if spegnere.lower() == "y":
comando+= " && poweroff"
print("The pc will shutdown after the process is ended.")
os.system("build-all") # Second script
os.system(comando)