Bash 如何通过echo将两个变量连接成一行?
我尝试搜索文件,并将路径和版本分离为变量,因为以后创建目录和解压缩所需路径中的.jar时将需要每个路径和版本Bash 如何通过echo将两个变量连接成一行?,bash,shell,echo,Bash,Shell,Echo,我尝试搜索文件,并将路径和版本分离为变量,因为以后创建目录和解压缩所需路径中的.jar时将需要每个路径和版本 file=$(find /home/user/Documents/test/ -path *.jar) version=$(echo "$file" | grep -P -o '[0-9].[0-9].[0-9].[0-9]') path=$(echo "$file" | sed 's/\(.*\)[/].*/\1/') newpath=$(echo "${path}/${versio
file=$(find /home/user/Documents/test/ -path *.jar)
version=$(echo "$file" | grep -P -o '[0-9].[0-9].[0-9].[0-9]')
path=$(echo "$file" | sed 's/\(.*\)[/].*/\1/')
newpath=$(echo "${path}/${version}")
echo "$newpath"
结果
> /home/user/Documents/test/gb0500
> /home/user/Documents/test/gb0500 /home/user/Documents/test/gb0500
> /home/user/Documents/test /home/user/Documents/test/1.3.2.0
> 1.3.2.1
> 1.3.2.2
> 1.2.0.0
> 1.3.0.0
很搞笑的是,它只在一条线上工作。
我还尝试了什么:
file=$(find /home/v990549/Dokumente/test/ -path *.jar)
version=$(grep -P -o '[0-9].[0-9].[0-9].[0-9]')
path=$(sed 's/\(.*\)[/].*/\1/')
while read $file
do
echo "$path$version"
done
我没有编写脚本的经验。这就是我几天前发现的。我只是在练习,试着让生活更轻松
查找输出:
/home/user/Documents/test/gb0500/gb0500-koetlin-log4j2-web-1.3.2.0-javadoc.jar
/home/user/Documents/test/gb0500/gb0500-koetlin-log4j2-web-1.3.2.1-javadoc.jar
/home/user/Documents/test/gb0500/gb0500-koetlin-log4j2-web-1.3.2.2-javadoc.jar
/home/user/Documents/test/gb0500-co-log4j2-web-1.2.0.0-javadoc.jar
/home/user/Documents/test/gb0500-commons-log4j2-web-1.3.0.0-javadoc.jar
由于变量
version
和path
都是换行分隔的,那么:
file=$(find /home/user/Documents/test/ -path *.jar)
version=$(echo "$file" | grep -P -o '[0-9].[0-9].[0-9].[0-9]')
path=$(echo "$file" | sed 's/\(.*\)[/].*/\1/')
paste -d "/" <(echo "$path") <(echo "$version")
顺便说一句,我不建议在一个变量中存储多个文件名
作为换行分隔变量,原因如下:
- 文件名可能包含换行符
- 操纵每行的值并不容易。
例如,你可以简单地说
如果
只包含一行,则第三行为file
path=${file%/*}
希望这能有所帮助。这个脚本有很多问题,我不知道从哪里开始至少给我们看一段
查找的输出,这样我们可以尝试帮助这里有很多东西需要引用才能正常工作。试着从中寻找建议。啊,好吧。。。我懂了。。我已经引用过一次,但在测试其他东西时,我忘了把它加回去。是的,你是对的。我错了。版本是唯一在长度和格式上总是相同的东西。我只是拿了一个.jar文件,并为实验目的进行了编辑。所以名字总是不同的。我的目标是观察是否上传了一个新的.jar文件,并将其解压缩到.jar文件所在的目录中。新目录的名称中有版本,因为我需要为我们的存储库对其进行符号链接。这确实有帮助。这向我表明,我离我想要的结果并不遥远。我只是从来没有用过“粘贴”,因为我还没听说过。是的,你就快到了。正如您将看到的,前三行没有改变。如果有帮助的话,我很高兴。我希望您会喜欢bash脚本。
/home/user/Documents/test/gb0500/1.3.2.0
/home/user/Documents/test/gb0500/1.3.2.1
/home/user/Documents/test/gb0500/1.3.2.2
/home/user/Documents/test/1.2.0.0
/home/user/Documents/test/1.3.0.0