如何让bash脚本接受命令行中的任何字符?如果我键入以下字符串"<script_name> client_tool.c:518: if(1)"
,我得到“-sh:语法错误接近意外令牌`('”消息。看起来bash不能接受非转义“(”。
我正在尝试使用一个小脚本作为命令,它将直接打开vi (<path>:<line> <reference>)
中的grep输出(vi +<line>)
。问题是,grep中的<reference>
可能有“(”,这会阻止脚本运行。
答案 0 :(得分:0)
这可能是你想要的,用你的grep替换echo语句。
vi $ {echo&#34; client_tool.c:518:if(1)&#34; | awk -F:&#39; {print $ 1&#34; &#34; $ 2}&#39;}
答案 1 :(得分:0)
您可以使用以下脚本,确保引用诸如')'之类的参数。
#!/usr/bin/env bash
# Usage: grepvim <file:line> [search-result]
# example: grepvim client_tool.c:2 'if(1)'
file=$(echo $1 | cut -d: -f1)
line=$(echo $1 | cut -d: -f2)
vim "$file" +${line}
答案 2 :(得分:0)
更改你的grep命令!
使用grep -l "something" *.c
,您将获得一个文件列表
一次打开所有这些文件,请使用
vi $(grep -l "something" *.c)
答案 3 :(得分:0)
我无法按照我想要的方式行事,但现在我已经找到了解决方法。我调用该命令,命令将等待并使用'read'命令读取输入。这样,它可以读取任何输入字符。