我正在尝试使用此变量
MediaExt="*.{mp4,mkv,avi}"
在此命令中
mv ${MediaSource}/${MediaExt} ${UploadDir}
但它似乎不起作用。
有人可以帮我吗?谢谢!
答案 0 :(得分:1)
bash中的命令经过多次解析。决定是否应执行通配符(扩展*或*。{mp4,mkv,avi})的过程是在扩展变量的过程之前进行的。扩展变量后,就有候选对象可以使用,但已经做出不需要使用对象的决定
如果将表达式写为:
mv ${MediaSource}/*.{mp4,mkv,avi} ${UploadDir}
您可能会发现一些建议,可以使用eval
。 请不要!
这个:
eval mv ${MediaSource}/${MediaExt} ${UploadDir}
将按预期执行,但是如果您不控制变量的值,eval
可能会很危险。例如,如果可以将UploadDir设置为:
UploadDir="somedirectory; rm -rf ~"
然后eval
将作为两个语句执行您的请求并删除您的所有文件。