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