这个shell脚本中的错误是什么

Eng*_*ine 0 linux shell

我从来没有使用shell脚本,但现在我必须,这是我正在尝试做的事情:

#!/bin/bash
echo running the program 
./first 
var = ($(ls FODLDER |wc -l))    #check how many files the folder contains 
echo $var
if( ["$var" -gt "2"] #check if  there are more the 2file 
then ./second 
fi
Run Code Online (Sandbox Code Playgroud)

scriopt在if声明中崩溃了.我怎么能解决这个问题

fed*_*qui 5

许多:

var = ($(ls FODLDER |wc -l))
Run Code Online (Sandbox Code Playgroud)

这是错误的,你不能有这些空间=.

if( ["$var" -gt "2"]
Run Code Online (Sandbox Code Playgroud)

(没有做任何事情,所以必须删除它.此外,你需要[和周围的空间].

总之,这将更有意义:

#!/bin/bash
echo "running the program"
./first 
var=$(find FOLDER -maxdepth 1 -type f|wc -l) # better find than ls
echo "$var"
if [ "$var" -gt "2" ]; then
    ./second 
fi
Run Code Online (Sandbox Code Playgroud)

注意:

  • 无论什么时候引用echo,特别是处理变量时.
  • 看另一种在给定路径中查找文件的方法.解析ls有点邪恶.
  • 缩进代码以获得更好的可读性.

  • 当我们讨论_fun alternative_时:'eval'之后$(stat -s.)"``echo $(($ st_nlink -2))`给出目录中"条目"的确切数量..;) (2认同)
  • @Engine你可以查看Olivier Dulac和jm666关于如何计算FOLDER目录中文件/元素数量的好评. (2认同)