带有壳变量的有条件bash



我想检查是否使用 [ -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" . ;
  • -wholenamepages目录中的名为$1的文件匹配。
  • -print替换pwd
  • 现在您可以直接致电cp

最新更新