Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从单行命令回显bash变量_Bash_Unix_For Loop_Filenames_Cut - Fatal编程技术网

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

无法从单行命令回显bash变量,bash,unix,for-loop,filenames,cut,Bash,Unix,For Loop,Filenames,Cut,我尝试将v5.4b重新标记为v5.7的文件名如下: 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.o897430

我尝试将
v5.4b
重新标记为
v5.7
的文件名如下:

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循环
,但我无法让它工作

我正在尝试这篇文章推荐的答案,但是得到了一大堆空行

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

-bash-4.1$ for i in v5.4b*; do echo $i | SUFFIX=`cut -f2 -d'_'`; echo ${SUFFIX}; done

如果重命名实用程序,只需执行以下操作:

rename -n 's/v5\4.b/v5.7/' v5.4b*
注:
-n
用于干运行。您可以稍后将其删除以进行真正的重命名

如果
rename
不可用,则使用:

for i in v5.4b*; do
   echo mv "$i" "${i/v5.4b/v5.7}"
done

如果对输出感到满意,请删除“echo”。

如果重命名实用程序,只需执行以下操作:

rename -n 's/v5\4.b/v5.7/' v5.4b*
注:
-n
用于干运行。您可以稍后将其删除以进行真正的重命名

如果
rename
不可用,则使用:

for i in v5.4b*; do
   echo mv "$i" "${i/v5.4b/v5.7}"
done

如果您对输出感到满意,请删除“echo”。

您将
echo$i
放在错误的位置。该命令的输出需要通过管道传输到
cut
,以便读取任何内容,然后将结果分配给
后缀

for i in v5.4b*
do 
    SUFFIX=`echo $i | cut -f2 -d'_'`
    echo ${SUFFIX}
done

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

for i in v5.4b*
do 
    SUFFIX=`echo $i | cut -f2 -d'_'`
    echo ${SUFFIX}
done

v5.4b*中i的
;do SUFFIX=
echo$i|cut-f2-d'
;mv$i v5.7_${后缀};完成
非常感谢v5.4b*中的i;do SUFFIX=echo$i|cut-f2-d'
;mv$i v5.7_${后缀};完成
NICE Thanks我以后肯定会用这个。我必须将另一个标记为正确的,因为这是questino特有的,但非常感谢分享这一点。我投了更高的票。我以后肯定会用这个。我必须将另一个标记为正确的,因为这是questino特有的,但非常感谢分享这一点。我投了赞成票。