#! /bin/bash if [ -z $1 ];then echo -e "\e[31m ======Missing running path====== \e[0m" read -p "Pleace Enter the Path Needed: " var1 elif [ -z $1 ]; then var1=$1 fi caseNo=0 passNo=0 curDir=`pwd` DATE=`date +%y%m%d` remote_user="tianrzh" remote_host="szvtg1-01" path="/argus03/tianrzh/NE/${DTAE}" scp -r $remote_user@$remote_host:$var1/NEABT_FAIL.log $path Fail="$path/NEABT_FAIL.log" cat ${Fail} | sed 's/.*\./$path/' >> $path/casefile cat $path/casefile | while read line do filename=${line##*/} dirname=${line%/*} mkdir -p "$path/$line" scp -r $remote_user@$remote_host:$var1/$line/*.log $path/$line done echo "所有文件已传输到本地服务器!"哪里出错了?
时间: 2024-03-16 08:43:59 浏览: 84
这段代码存在一些语法错误和逻辑问题。以下是一些需要修正的问题:
1. 第2行的 `if` 和第4行的 `elif` 条件是一样的,应该将第4行改为 `else`。
2. 第6行缺少一个空格,应该为 `case No=0`。
3. 第7行也缺少一个空格,应该为 `pass No=0`。
4. 第8行的 `DTAE` 变量未定义。
5. 第10行的 `$path` 应该被双引号包围,以便正确地展开变量。
6. 第11行的 `sed` 命令中的单引号将 `$path` 作为字符串字面量而不是变量,应该使用双引号。
7. 第11行的 `>>` 操作符使用错误,应该为 `>`。
8. 第13行的变量 `line` 应该被双引号包围,以便正确地展开变量。
9. 第14行的 `mkdir` 命令中 `$line` 应该被双引号包围,以便正确地展开变量。
10. 第15行的 `scp` 命令中 `$line` 应该被双引号包围,以便正确地展开变量。
修正后的代码如下:
```bash
#! /bin/bash
if [ -z $1 ]; then
echo -e "\e[31m======Missing running path======\e[0m"
read -p "Please Enter the Path Needed: " var1
elif [ -z $1 ]; then
var1=$1
fi
caseNo=0
passNo=0
curDir=`pwd`
DATE=`date +%y%m%d`
remote_user="tianrzh"
remote_host="szvtg1-01"
path="/argus03/tianrzh/NE/${DATE}"
scp -r $remote_user@$remote_host:"$var1/NEABT_FAIL.log" "$path"
Fail="$path/NEABT_FAIL.log"
cat "$Fail" | sed "s/.*\./$path/" > "$path/casefile"
cat "$path/casefile" | while read line; do
filename="${line##*/}"
dirname="${line%/*}"
mkdir -p "$path/$dirname"
scp -r $remote_user@$remote_host:"$var1/$line/*.log" "$path/$line"
done
echo "所有文件已传输到本地服务器!"
```
请注意,这段代码的实际功能和正确性仍需要根据需求进一步验证。
阅读全文