我正在编写一个仅导出已更改文件的SVN脚本。这样做我只想导出文件,如果它们不包含特定文件。
所以,首先我要修改找到here的脚本。
我找到了一种方法来检查字符串是否包含使用找到的功能here。
现在,当我尝试运行以下内容时:
filename=`echo "$line" |sed "s|$repository||g"`
if [ ! -d $target_directory$filename ] && [[!"$filename" =~ *myfile* ]] ; then
fi
但是我不断收到错误说明:
/home/home/myfile: "no such file or directory"
看来BASH将$ filename视为文字。如何获取它以便将其作为字符串而不是路径读取?
感谢您的帮助!
答案 0 :(得分:1)
您有一些语法问题(shell script linter可以解决这些问题):
你还需要在then子句中使用某些东西,但既然你设法运行它,我会假设你把它遗漏了。
[[ $foo == *bar* ]]
和[[ $foo =~ .*bar.* ]]
。第一个使用glob,第二个使用正则表达式。只需使用[[ ! $filename == *myfile* ]]