sed "s/.*\.\//${Path}\//"为什么没有翻译${Path]
时间: 2023-12-13 20:02:48 浏览: 108
在你提供的命令`sed "s/.*\.\//${Path}\//"`中,`${Path}`是一个变量,你可能期望它被替换为变量值。然而,在单引号字符串中,变量不会被解析和替换。
要使`${Path}`被正确解析和替换为变量值,你可以使用双引号字符串。修改命令如下:
```bash
sed "s/.*\.\//${Path}\//"
```
在双引号字符串中,`${Path}`会被解析为变量值,并在`sed`命令中进行替换。
请注意,这只适用于在 Bash 或类似的 Shell 中使用。如果你在其他环境中使用不同的 Shell 或工具,请查看相应的文档以了解正确的变量替换语法。
希望这次能够解决你的问题!如果还有其他疑问,请随时提问。
相关问题
Path= "./ " sed "s/.*\.\//${Path}\//" 哪里错了?
在你提供的命令`Path= "./ " sed "s/.*\.\//${Path}\//"`中,有一个小错误。在定义`Path`变量时,路径前面多了一个空格。这个空格可能导致路径匹配失败。
你可以将命令修改为以下形式:
```bash
Path="./" # 移除空格
sed "s/.*\.\//${Path}\//"
```
这样,定义的`Path`变量将不再包含额外的空格,并且`sed`命令将正确地将`./`之前的内容替换为`${Path}/`。
请注意,我在命令中删除了最后的斜杠`/`,因为在替换中的斜杠是用来转义的。如果你需要斜杠作为替换结果的一部分,请将其放在`${Path}`后面。
希望这可以解决你的问题!如果还有其他疑问,请随时提问。
#! /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 "所有文件已传输到本地服务器!"哪里出错了?
这段代码存在一些语法错误和逻辑问题。以下是一些需要修正的问题:
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 "所有文件已传输到本地服务器!"
```
请注意,这段代码的实际功能和正确性仍需要根据需求进一步验证。
阅读全文