【发布时间】:2019-04-10 03:44:38
【问题描述】:
我有一个用于重命名文件夹中多个文件的 shell 脚本。它在 rhel 主机上工作,但在 ubuntu14 主机上抛出错误。
#!/usr/bin/env bash
SOME_NUMBER=1
rename _file_name.c _file_${SOME_NUMBER}.c path/of/file/*_file_name.c
我应该对代码进行哪些更改才能使其在 ubuntu14 主机上运行?
EDIT-1:
为了在 ubuntu 机器上运行代码,我做了以下更改,它可以工作:
rename 's/\_file_name.c$/\_file_1.c/' path/of/file/*_file_name.c
但以下不起作用,我收到以下错误消息:
rename 's/\_file_name.c$/\_file_${SOME_NUMBER}.c/' path/of/file/*_file_name.c
错误信息:
Global symbol "$SOME_NUMBER" requires explicit package name at (eval 1) line 1.
Global symbol "$SOME_NUMBER" requires explicit package name at (eval 1) line 1.
【问题讨论】:
-
这是
perl错误消息,而不是bash。但是${SOME_NUMBER}会被shell 扩展,它不应该被perl看到。 -
那是脚本的精确副本吗?如果
_file_${SOME_NUMBER}.c用单引号括起来,您会收到该错误。 -
你是对的 Barmar。我已经编辑了问题陈述。
-
你知道@ShijithR 吗?他们在 1 小时前发布了一个非常相似的问题(他们已经将其删除),并且还在问题中发布了错误类型的引号。
标签: bash shell ubuntu scripting ubuntu-14.04