Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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
BASH脚本接受参数_Bash - Fatal编程技术网

BASH脚本接受参数

BASH脚本接受参数,bash,Bash,我必须编写一个脚本,接受1+源文件和目标目录作为参数。我试图为包含空格的文件名编写一条错误消息,但当我输入多个参数并在其中包含空格时,会出现错误。任何帮助都将不胜感激。。这是我到目前为止写的: if [ "$#" -eq "$(echo "$@" | wc -w)" ] then echo "Invalid arguments. Filenames may not contain spaces." echo "usage: bkup file1 [file2...] bk

我必须编写一个脚本,接受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
您可能想试试:

if  [ $filename == "*" "*" ]; then
      echo your error message here
fi
用于测试文件名中的空格

至于真正得到args

$1是第一个arg的变量,$2是第二个arg的变量,依此类推,这样可能会起作用:

if [ $2 == "*" ]; then
       echo NO NO NO NOT TODAY!!!
fi
这将检查第二个参数是否有任何说明,如果有说明,我们可以假定它是文件名的一部分(这仅在文件名是最后一个参数时有效),或者:

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


但我对bash也是新手,所以这可能不是你想要的,或者我可能有正确的想法,所有这些都可能是完整的whooey。。。。。但是如果我能帮忙的话,我很高兴我能做到。

脚本应该如何知道两个文件名之间的区别,两个文件名之间用空格分隔,一个文件名包含空格?如果在整个脚本中正确引用参数,用户可以在命令行上正确指定带空格的文件名(引用和/或转义)你可以正确地采取行动。
if [ $2 == "*" ]; then
   fil=$1 + \
   filename=&fil + $2
fi