Bash
查找函式、命令和內置函式
可能重複:
假設我有以下 bash 程式碼:
!#/bin/bash function print_echo (){ echo "This is print_echo Function" $1; } find ./ -iname "*" -exec print_echo {} \;
對於每個
-exec
命令,我都會收到以下錯誤:find: `print_echo': No such file or directory
注意:在此之前,我對一個關鍵程序進行了測試,並用另一種算法解決了我的程序,但這是一個問題:為什麼 find 命令不接受內置的 bash 命令和函式名作為參數
-exec
?
find
不接受您的函式作為命令,因為它的謂詞-exec
從字面上呼叫 C 庫exec
函式來啟動程序。您的函式僅對 bash 解釋器本身可用。即使您在.bashrc
文件中定義了函式,它也僅對bash
.因此,如果您確實需要使用 find 的
-exec
一些自定義命令序列執行兩次,請將其放入單獨的腳本文件中或使用其他解決方法。
我不知道為什麼
find
不喜歡功能。解決方法如下:#!/bin/bash function print_echo (){ echo "This is print_echo Function" $1; } for f in $(find . -iname "*") do print_echo $f done
更新
上面的腳本不適用於嵌入空格的文件。以下更新會:
#!/bin/bash function print_echo (){ echo "This is print_echo Function" $1; } find . -iname "*.sh" | \ while read f do print_echo "$f" done