首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从单行命令回显bash变量

无法从单行命令回显bash变量
EN

Stack Overflow用户
提问于 2018-06-11 19:21:53
回答 2查看 79关注 0票数 0

我有以下文件名,我试图将v5.4b重命名为v5.7

代码语言:javascript
复制
v5.4b_lvl-1.e8974326
v5.4b_lvl-1.o8974326
v5.4b_lvl-1.pe8974326
v5.4b_lvl-1.po8974326
v5.4b_lvl-2.1.e8974303
v5.4b_lvl-2.1.o8974303
v5.4b_lvl-2.1.pe8974303
v5.4b_lvl-2.1.po8974303
v5.4b_lvl-2.2.e8974304
v5.4b_lvl-2.2.o8974304
v5.4b_lvl-2.2.pe8974304
v5.4b_lvl-2.2.po8974304
v5.4b_lvl-3.1.e8974305
v5.4b_lvl-3.1.o8974305
v5.4b_lvl-3.1.pe8974305
v5.4b_lvl-3.1.po8974305
v5.4b_lvl-4.1.e8974327
v5.4b_lvl-4.1.o8974327
v5.4b_lvl-4.1.pe8974327
v5.4b_lvl-4.1.po8974327

我不能做mv v5.4b_* v5.7_*,因为它认为v5.7_*是一个目录,所以我正在尝试一个for-loop,但我无法让它工作

我正在尝试这个建议的答案,所以post How to set a variable to the output of a command in Bash?,但得到了一堆空行。

,我做错了什么?如何将cut SUFFIX 的输出保存到SUFFIX,以便使 mv $i v5.7_$SUFFIX**?**

代码语言:javascript
复制
-bash-4.1$ for i in v5.4b*; do echo $i | SUFFIX=`cut -f2 -d'_'`; echo ${SUFFIX}; done
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-11 19:27:22

你把echo $i放错地方了。该命令的输出需要管道到cut以读取任何内容,然后将结果分配给SUFFIX

代码语言:javascript
复制
for i in v5.4b*
do 
    SUFFIX=`echo $i | cut -f2 -d'_'`
    echo ${SUFFIX}
done
票数 2
EN

Stack Overflow用户

发布于 2018-06-11 19:24:28

如果您重命名实用程序,那么只需执行:

代码语言:javascript
复制
rename -n 's/v5\4.b/v5.7/' v5.4b*

PS:-n是用于试运行的.您以后可以删除它以进行真正的重命名。

如果rename不可用,请使用:

代码语言:javascript
复制
for i in v5.4b*; do
   echo mv "$i" "${i/v5.4b/v5.7}"
done

如果您对输出满意,请移除回波。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50804691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档