0

我发现我的一段 bash 脚本导致挂断。我在这里提取它:

#!/bin/bash
cat << EndOfFspreadFile >> ./myscript.sh 
echo Enter Source Path : 
read SRCPATH
FILECNT=`find $SRCPATH/* 2>/dev/null | wc -l`
FILECNTERR=`find $SRCPATH/* 2>&1 | grep "find:" | wc -l`
echo count : $FILECNT
echo problems : $FILECNTERR
EndOfFspreadFile
echo done

该脚本应该只是将集成块中的脚本部分附加到 myscript.sh 文件中。但它只是挂起!谢谢 !- 穆罕默德 -

4

1 回答 1

2

您的 $ 变量和反引号将得到扩展。您需要在脚本中转义它们。现在你最终搜索了整个文件系统。

基本上,find $SRCPATH/* 2>/dev/null | wc -l被执行为find /* 2>/dev/null | wc -l

以下是如何重写它(仅一行示例):

FILECNT=\$(find \$SRCPATH/* 2>/dev/null | wc -l)

顺便说一句,很容易找出你是否运行bash -x <your script>.

于 2013-01-31T00:40:08.600 回答