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

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

令我困惑的是,如果我复制echo'd字符串并将其粘贴到命令行中,它就可以正常工作。
有人知道为什么这个脚本失败了,但是命令行调用工作了吗?

最佳答案

引用很难。基本上,将双引号从指定给$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/

10-10 14:15