我想检查是否使用 [ -f "$1" ]
存在文件,但它不起作用。该命令正在使用纯文本,例如[ -f "filename.xml" ]
。
i回声$1
,例如filename.xml
。有什么想法吗?
sourcePath=/SPECIFICPATH/${1};
echo $sourcePath;
echo $1;
find /EXAMPLEPATH -name pages -type d -execdir bash -c 'cd pages && [ -f "$1" ] && pwd && cp $sourcePath .' ;
我正在使用shell脚本块在自动机中工作。
您正在调用带有bash -c …
的全新外壳,因此您需要随身携带$1
。如果没有导出,则与$sourcePath
相同。
find /EXAMPLEPATH -name pages -type d -execdir bash -c 'cd pages && [ -f "$1" ] && pwd && cp "$2" .' bash "$1" "$sourcePath" ;
(在bash -c … bash "$1" "$sourcePath"
中,第二个bash
是$0
。)
如果将某些逻辑移至Find命令。
find /EXAMPLEPATH -wholename "*/pages/$1" -print -execdir cp "$sourcePath" . ;
-
-wholename
与pages
目录中的名为$1
的文件匹配。 -
-print
替换pwd
。 - 现在您可以直接致电
cp
。