我在下面调用了一个函数,它接受一个变量" name" (来自class DB{
public static function connect($engine,$host,$user,$pass,$name){
try{
$dbh = new PDO("$engine:host=$host;dbname=$name;charset=utf8",$user,$pass);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
return $dbh;
} catch(PDOException $e){
echo $e->getMessage();
}
}
}
的文件路径)
然后我想使用文件路径来运行一些检查,但是find正在拾取包含find
的临时文件。
所以现在当尝试使用函数中的第一个参数时,字符串会在$
截断。
所以
$
回复为
File=/root/fed/~$reader.txt
使用''是流行的答案,不知道如何在这里申请
代码是:
/root/fed/eager.txt
答案 0 :(得分:2)
您需要使用单引号来阻止Bash扩展$reader
中的name
。
这是一个简单使用echo
的演示:
bash-4.3$ find . -type f -print0 | xargs -0 -I name bash -c 'echo "name"'
./~.txt
bash-4.3$ find . -type f -print0 | xargs -0 -I name bash -c "echo 'name'"
./~$reader.txt
您不需要更改fnchash()
。
所以,用:
fnchash () {
echo "$1"
}
您应该可以致电:
find / -type f -print0 | xargs -0 -I name bash -c "fnchash 'name'"
获得您想要的结果:
bash-4.3$ ls -laF
total 0
drwxr-xr-x 3 paj staff 102 7 May 22:57 ./
drwxr-xr-x 55 paj staff 1870 7 May 22:57 ../
-rw-r--r-- 1 paj staff 0 7 May 22:57 ~$reader.txt
bash-4.3$ find . -type f -print0 | xargs -0 -I name bash -c "fnchash 'name'"
./~$reader.txt