【发布时间】:2021-04-05 00:02:41
【问题描述】:
我对 bash 脚本比较陌生,希望有人能正确解释这一点,谢谢。这是我的代码:
#! /bin/bash
echo "first arg: $1"
echo "first arg: $2"
var="$( grep -rnw $1 -e $2 | cut -d ":" -f1 )"
var2=$( grep -rnw $1 -e $2 | cut -d ":" -f1 | awk '{print substr($0,length,1)}')
echo "$var"
echo "$var2"
我遇到的问题是输出,我正在尝试编写的脚本是一个 c++ 函数搜索器,因此在启动我的脚本时我有 2 个参数,一个用于目录,第二个作为函数名。这就是我的输出的样子:
first arg: Projekt
first arg: iseven
Projekt/AX/include/ax.h
Projekt/AX/src/ax.cpp
h
p
现在我的问题是:如何将逐行输出保存为变量,以便以后可以使用var 作为路径,或者使用var2 作为字符进行比较。我的计划是使用 IF() 语句来确定类型,想法:IF(last_char == p){echo:"something"}我尝试的是这个问题:Capturing multiple line output into a Bash variable,然后给它一个数组。所以我的代码看起来像:"${var[0]}"。请解释我以后如何使用我的行输出作为变量。
【问题讨论】:
-
stackoverflow.com/a/17602863/9072753 是
echo "${var[0]}"。首先你必须var=($(....))。先在网上研究一下bash数组,有很多好的资源.. -
对不起,但是,“${var[0]}”正是我写的,它不起作用,有没有办法让每个输出行作为一个单独的字符串?
-
在你的问题中你说
echo "$var[0]"是你写的。这与echo "${var[0]}"不同。如果您以何种方式告诉我们“它不起作用”,那么我们可能会帮助您调试问题。 -
我现在已经编辑了问题,对不起,这是我的错,因为我不经常使用 bash,我只是不假思索地使用了“c++ 语法”