Я хочу написать метод Java, который читает сценарий bash в один объект String, а затем разбить эту строку на минимальный массив команд String, чтобы я мог выполнять их по одной команде за раз. Проблема, с которой я столкнулся, заключается в том, что мне нужно сохранить операторы блока (например, if и while и входные перенаправления) нетронутыми, то есть не разбивать их дальше.
В качестве примера приведен следующий скрипт bash:
./configure --sbindir=/lib/security \
--docdir=/usr/share/doc/Linux-PAM-1.1.3 \
--enable-read-both-confs &&
make
install -v -m755 -d /etc/pam.d &&
cat > /etc/pam.d/other << "EOF"
auth required pam_deny.so
account required pam_deny.so
password required pam_deny.so
session required pam_deny.so
EOF
rm -rfv /etc/pam.d
make install &&
chmod -v 4755 /lib/security/unix_chkpwd &&
mv -v /lib/security/pam_tally /sbin &&
mv -v /lib/libpam{,c,_misc}.la /usr/lib &&
sed -i 's| /lib| /usr/lib|' /usr/lib/libpam_misc.la &&
if [ -L /lib/libpam.so ]; then
for LINK in libpam{,c,_misc}.so; do
ln -v -sf ../../lib/$(readlink /lib/${LINK}) /usr/lib/${LINK} &&
rm -v /lib/${LINK}
done
fi
echo done
Я хочу программно разбить его на
./configure --sbindir=/lib/security --docdir=/usr/share/doc/Linux-PAM-1.1.3 --enable-read-both-confs
make
install -v -m755 -d /etc/pam.d
cat > /etc/pam.d/other << "EOF"
auth required pam_deny.so
account required pam_deny.so
password required pam_deny.so
session required pam_deny.so
EOF
rm -rfv /etc/pam.d
make install
chmod -v 4755 /lib/security/unix_chkpwd
mv -v /lib/security/pam_tally /sbin
mv -v /lib/libpam{,c,_misc}.la /usr/lib
sed -i 's| /lib| /usr/lib|' /usr/lib/libpam_misc.la
if [ -L /lib/libpam.so ]
then
for LINK in libpam{,c,_misc}.so; do
ln -v -sf ../../lib/$(readlink /lib/${LINK}) /usr/lib/${LINK} &&
rm -v /lib/${LINK}
done
fi
echo done
Можно ли это сделать с помощью регулярного выражения или каким-либо другим способом с помощью Java?
Даже некоторый псевдокод приветствуется.