file.tt.nh 我尝试编写一个 bash 脚本,让我可以-6ren">
gpt4 book ai didi

linux - 从命令行调用 sed 但在脚本中失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:33 25 4
gpt4 key购买 nike

我一直在使用以下对 sed 的调用来删除行文件。

sed "/% Program:/,/mode: SPIKE/d" file.tt > file.tt.nh

我尝试编写一个 bash 脚本,让我可以同时在多个文件上运行该脚本。但是 sed 失败了。

sed "/% Program:/,/mode: SPIKE/d" file.tt > file.tt.nh
sed: -e expression #1, char 1: unknown command: `"'

这是我写的脚本,但不起作用

#!/bin/bash
SEDARG='"/% Program:/,/mode: SPIKE/d"';
for F in *.tt
do
OUT=$F'.nh';
echo 'sed '$SEDARG' '$F' > '$OUT;
sed $SEDARG $F > $OUT
done

令我困惑的是,如果我复制回显字符串并将其粘贴到命令行中,它就可以正常工作。

有谁知道为什么此脚本失败但命令行调用有效?

最佳答案

引用很棘手。基本上,将双引号从您分配$SEDARG 的位置移动到您使用 $SEDARG 的位置。

SEDARG='/% Program:/,/mode: SPIKE/d'
for F in *.tt
do
OUT="$F.nh"
echo "sed $SEDARG $F > $OUT"
sed "$SEDARG" "$F" > "$OUT"
done

关于linux - 从命令行调用 sed 但在脚本中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com