rox*_*sap 2 linux shell sqlcmd
嗨,我有一个 shell 脚本,可以在 SQL 服务器中插入 linux 服务器的磁盘状态。在插入 SQL 命令之前,程序会正确执行并结束。但是,当我插入 SQL 命令时,.sh 文件永远不会转到下一行执行。它始终处于循环中。请帮忙
#!/bin/bash
#Functions here
insert() {
echo "--INSERT FUNCTION--"
echo "$1"
fsname=$1
fs=$(echo "${fsname: -3}")
sqlcmd -S <ipadd> -U <user> -P <pass> -d tech_admin -Q "EXEC insertDiskStatus $fs"
sleep 1
}
echo "TEST"
cd ~/Documents
pwd
df -Ph --exclude-type=tmpfs --exclude-type=ext3 --block-size=GB | column -t | sed 1d > diskspace.log
filename=diskspace.log
while read -r line
do
this=$line
fs=$(echo $line | awk '{print $1}')
insert $fs
done < "$filename"
Run Code Online (Sandbox Code Playgroud)
我有同样的问题。在我的 bash 脚本中,我在 while 循环中使用了 sqlcmd,该循环将继续一遍又一遍地运行列表中的第一项,而不是继续执行下一项。如评论中所述,将其添加 < /dev/null到 sqlcmd 行的末尾将使其摆脱循环中的卡住点并继续进行下一次。