Linux 在Bash中检查程序的版本等等
我创建了一个Bash脚本,该脚本通过crontab运行,该crontab检查Linux主机上安装的nmap版本。问题是,由于某些原因,检查无法正常工作,它总是一次又一次地尝试安装nmapLinux 在Bash中检查程序的版本等等,linux,bash,Linux,Bash,我创建了一个Bash脚本,该脚本通过crontab运行,该crontab检查Linux主机上安装的nmap版本。问题是,由于某些原因,检查无法正常工作,它总是一次又一次地尝试安装nmap #!/bin/sh if ! $(nmap --version | grep -q "7.12"); then wget https://nmap.org/dist/nmap-7.12.tar.bz2 -P /tmp/ cd /tmp && bzip2 -cd nma
#!/bin/sh
if ! $(nmap --version | grep -q "7.12"); then
wget https://nmap.org/dist/nmap-7.12.tar.bz2 -P /tmp/
cd /tmp && bzip2 -cd nmap-7.12.tar.bz2 | tar xvf -
cd nmap-7.12
./configure --without-zenmap
make
make install
cd ..
rm nmap-7.12.tar.bz2
rm -rf nmap-7.12
reboot
fi
如果我检查作业是否正在运行(它应该运行一次,但由于版本应该第二次匹配,因此不会再次运行),那么它是
从命令行运行检查产生(不带-q):
我的剧本怎么了?说:
正确的方法是:
if ! nmap --version | grep -q "7.12"; then
尝试查找字符串Nmap 7.12版(https://nmap.org )
,并且由于$(..)
的原因,它尝试将其作为命令运行。这会导致您可能应该记录并包含在问题中的错误:
Nmap:找不到命令
由于错误为false,因此代码>使其成为现实,并且您的代码每次都会运行。表示:
正确的方法是:
if ! nmap --version | grep -q "7.12"; then
尝试查找字符串Nmap 7.12版(https://nmap.org )
,并且由于$(..)
的原因,它尝试将其作为命令运行。这会导致您可能应该记录并包含在问题中的错误:
Nmap:找不到命令
由于错误为false,因此代码>使其成为现实,并且每次都运行您的代码
Line 2:
if ! $(nmap --version | grep -q "7.12"); then
^-- SC2091: Remove surrounding $() to avoid executing output.
if ! nmap --version | grep -q "7.12"; then