Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在Bash中检查程序的版本等等_Linux_Bash - Fatal编程技术网

Linux 在Bash中检查程序的版本等等

Linux 在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

我创建了一个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 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