2017-09-22 118 views
1

我想檢查一個文件是否存在與[ -f "$1" ]但它不工作。該命令使用純文本,如[ -f "filename.xml" ]Bash條件與shell變量

我同意$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腳本塊在automator中工作。

回答

2

您正在調用一個全新的外殼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

+0

瑞恩非常感謝你!這真的節省了我的時間..因爲你看我對bash是非常新的,我永遠不會想到在這個方向上。 通常我在終端中使用這個命令..但現在試​​圖集成在一個automator過程..現在終於工作=)再次感謝,並有一個愉快的週末 – Marco

1

沒有必要爲子shell,如果你還可以將一些邏輯來查找命令。

find /EXAMPLEPATH -wholename "*/pages/$1" -print -execdir cp "$sourcePath" . \; 
  • -wholename一個在pages目錄中名爲$1文件匹配。
  • -print替代pwd
  • 現在您可以直接致電cp