Mac OSX Bash脚本在搜索过程中有太多参数

时间:2015-12-04 22:04:48

标签: macos bash

使用Mac OSX Bash脚本错误第7行:[:参数太多 我的脚本只显示上面的错误......

任何帮助都会很棒。

if [ ! -f B*.mp3 ]
then
echo "No files"
    exit 0  
    else 

do something....
fi

3 个答案:

答案 0 :(得分:2)

在BASH中,您可以使用B*.mp3模式检查是否存在匹配文件:

shopt -s nullglob
arr=(B*.mp3)

if (( ${#arr[@]} ))
then
   echo "No files"
   exit 0  
else 
   echo "do something...."
fi

答案 1 :(得分:1)

Bash会将B*.mp3扩展为文件列表;如果有多个文件,test命令(又名[)的参数太多。)您可以使用find检查是否存在多个文件。

if [ -z "$(find . -name "B*.mp3" -maxdepth 1)" ]
then
echo "No files"
    exit 0  
    else 

do something....
fi

答案 2 :(得分:0)

如果使用位置参数列表没有问题,这将起作用:

#!/bin/bash
shopt -s nullglob     # Prevent that the B*.mp3 itself is the result.
set -- ./B*.mp3       # Find files that match the pattern.
if [ $# -lt 1 ];      # If there are 0 files ....
then
    echo "No files"
    exit 0  
else 
    do something....
fi