我从未使用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
scriopt在if
声明中崩溃了。我怎么解决这个问题
答案 0 :(得分:5)
许多:
var = ($(ls FODLDER |wc -l))
这是错误的,你不能在=
周围有这些空格。
if( ["$var" -gt "2"]
您的(
没有做任何事情,因此必须将其删除。此外,您需要[
和]
周围的空格。
总之,这会更有意义:
#!/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
注意:
echo
,特别是在处理变量时。答案 1 :(得分:2)
编辑 script.bash 文件,如下所示:
#!/bin/env bash
dir="$1"
echo "running the program"
./first
dir_list=( $dir/* ) # list files in directory
echo ${#dir_list[@]} # count files in array
if (( ${#dir_list[@]} > 2 )); then # test how many files
./second
fi
script.bash /tmp/
您需要 learn bash以避免危险行为!
/tmp/
→`$ 1)dir_list
)${#dir_list[@]}
)