bash脚本接受任何输入

时间:2016-02-24 15:01:09

标签: bash shell

如何让bash脚本接受命令行中的任何字符?如果我键入以下字符串"<script_name> client_tool.c:518: if(1)",我得到“-sh:语法错误接近意外令牌`('”消息。看起来bash不能接受非转义“(”。

我正在尝试使用一个小脚本作为命令,它将直接打开vi (<path>:<line> <reference>)中的grep输出(vi +<line>)。问题是,grep中的<reference>可能有“(”,这会阻止脚本运行。

4 个答案:

答案 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'命令读取输入。这样,它可以读取任何输入字符。