尝试使用 sed 替换 tex 最终没有这样的文件或目录

问题描述 投票:0回答:1

我是新来的,我还没有找到我能够理解我的问题的解决方案。 我想创建一个脚本,用给脚本的参数替换定义的变量。 我正在使用 Windows 10 和已实施的 bash beta 版本(不知道在哪里可以看到它) 另外,该脚本应该将输出 tex 转换为 pdf,到目前为止我不知道如何执行此操作。 我从以下脚本开始:

bash mail.sh“马克斯玛丽亚”穆斯特曼“Musterstraße 20”1234 Musterstadt

我现在的代码:

touch ./test.tex
chmod 700 ./test.tex
more AB6.tex | awk -v pre="$1" '{gsub("VORNAME",pre)}1' | awk -v suff="$2" '{gsub("NACHNAME",suff)}1' | awk -v street="$3" '{gsub("STRASSE",street)}1' | awk -v plz="$4" '{gsub("PLZ",plz)}1' | awk -v city="$5" '{gsub("STADT",city)}1' >./test.tex

Cany@DESKTOP-MSCQBI6:/mnt/c/Users/schin/Documents$ bash mail2.sh "最大 玛丽亚”穆斯特曼“Musterstrasse 20”1234 穆斯特施塔特触摸: »./test.tex “ kann nicht berührt werden: Datei oder Verzeichnis nicht gefunden chmod: Zugriff auf »./test.tex “ nicht möglich: Datei oder Verzeichnis nicht gefunden : Datei oder Verzeichnis nicht gefunden

首先是 触摸:无法触摸:没有这样的文件或目录 chmod:无法访问./test.tex (为什么 ???) 没有这样的文件或目录 找不到目录:没有这样的文件或目录

有什么建议吗?

bash sed directory
1个回答
1
投票

我认为错误信息:

Datei oder Verzeichnis nicht gefunden

是因为当前目录不在你的路径中?所以你应该通过以下方式调用脚本:

./mail.sh "Max Maria" Mustermann "Musterstraße 20" 1234 Musterstadt

在你的脚本中,你只需要关闭和打开属于 sed 命令的单引号,以便 shell 可以扩展你的变量。所以只需使用:

#!/bin/bash
# Mailscript
#
# Variablen
pre=$1
suff=$2
street=$3
plz=$4
city=$5
sed -e 's/VORNAME/'"$pre"'/g; s/NACHNAME/'"$suff"'/g;s/STRASSE/'"$street"'/g;s/STADT/'"$city"'/g;s/PLZ/'"$plz"'/g' file1 > file2

与文件1

My VORNAME
Your NACHNAME
The STRASSE
STADT which is pretty
PLZ with primes

这会产生文件2

My Max Maria
Your Mustermann
The Musterstraße 20
Musterstadt which is pretty
1234 with primes
© www.soinside.com 2019 - 2024. All rights reserved.