BASH脚本接受参数

时间:2013-12-02 23:57:59

标签: bash

我必须编写一个脚本,接受1+源文件和目标目录作为参数。我试图为包含空格的文件名编写错误消息,但是当我输入多个参数并且其间也有空格时,它会收到错误。任何帮助将不胜感激..这是我到目前为止所写的:

if [ "$#" -eq "$(echo "$@" | wc -w)" ]
    then
    echo "Invalid arguments. Filenames may not contain spaces."
    echo "usage: bkup file1 [file2...] bkup_directory"
    exit 13
fi

1 个答案:

答案 0 :(得分:1)

您可能想尝试:

if  [ $filename == "*" "*" ]; then
      echo your error message here
fi

用于测试文件名中的空格。

至于实际获取args

$ 1是第一个arg的变量,第二个是$ 2,所以这样的东西可能有用:

if [ $2 == "*" ]; then
       echo NO NO NO NOT TODAY!!!
fi

这将检查第二个参数是否说明了什么,所以如果它确实如此,我们可以假设它是文件名的一部分(如果文件名是最后的论据,那只会工作)或者:

if [ $2 == "*" ]; then
   fil=$1 + \
   filename=&fil + $2
fi

这会自动将其文件名更改为系统的可接受格式,您不需要错误消息。

但我也是bash的新手,所以这可能不是你想要的,或者我可以有正确的想法,所有这些都可能是完整的...但如果我帮助那么我很高兴我能