我正在尝试编写脚本来运行脚本,但在运行脚本之前,我想检查它是dos还是unix格式并相应地进行转换。以下是我到目前为止的情况:
spawn ssh root@login
expect "assword:"
send "myPass\r"
expect "#"
send "cd /myDir\r"
expect "#"
if head -1 *.sh | grep $'[\x0D]' >/dev/null #check to see if dos or unix
then #if dos then convert to unix and change permissions
dos2unix *.sh
chmod 777 *.sh
else #else execute script
./*.sh
fi
expect "#"
我是否允许将if语句包含在expect脚本的中间?如何在if语句(dos2unix和chmod)之后执行多个命令。
答案 0 :(得分:0)
不,你不能混合shell并且期望那样,但是你可以发送一个复杂的shell命令:
send "cd /myDir\r"
expect "#"
send {for f in *.sh; do head -1 "$f" | grep -q $'[\x0D]' && { dos2unix "$f"; chmod 777 "$f"; }; ./"$f"; done}
send "\r"
expect "#"