我必须编写一个脚本,接受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
答案 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的新手,所以这可能不是你想要的,或者我可以有正确的想法,所有这些都可能是完整的...但如果我帮助那么我很高兴我能