将表达式中的空格通过表达式中的空格传递给Bash函数我需要用bash脚本中的文件中的另一个字符串替换一个空格字符串,其中所有调用都应该通过写入命令的函数完成到一个日志文件,然后运行该命令。 logrun函数使用特殊字符[email protected]
来读取命令。我正在尝试使用sed进行替换,但是当表达式参数中包含空格的sed命令经过[email protected]
时,我无法找到逃避空格的方法。
我已经简化,以测试在哪里用sed用于与A B C替换一个C脚本的问题。
test1.sh的伟大工程:
#!/bin/bash
TESTFILE=/tmp/test.txt
echo "a c" > $TESTFILE
sed -i -e 's/a c/a b c/' $TESTFILE
test2.sh失败:
#!/bin/bash
function logrun() {
[email protected]
$CMD
}
TESTFILE=/tmp/test.txt
echo "a c" > $TESTFILE
logrun sed -i -e 's/a c/a b c/' $TESTFILE
结果:
sed: -e expression #1, char 3: unterminated `s' command
的原因是错误的空间(S)的-e表达。我还没有找到通过该函数调用sed的方法。我曾尝试使用双引号而不是单引号,并用反斜杠等空格转义。我很想知道正确的方法。
@Barmar您已经关闭了几个问题:HTTP的重复://计算器。 COM /问题/ 13365553 /设置-AN-参数与 - 庆典。找到更多规范的副本是很好的。这个问题有点难以解析,特别是对于有人询问'$ @'的问题,在这篇文章中根本没有提到。 –
有一点你说过了,既然删除了,“**注意:**我不应该修改logrun函数”,那么修改函数是否可以? – user3439894
@ user3439894您可以在不修改该功能的情况下执行此操作吗?我想知道这是否可能。 – talamaki