0

在这段代码中我做错了什么吗?

OLD_NAME="$FILE"
NEW_FILE=`${OLD_NAME | tr ' ' '_'}`
/bin/mv "$OLD_NAME" "$NEW_FILE"

我想要的只是重命名提供的文件并用下划线替换所有空格。我收到bad substitution错误消息。我似乎无法让重命名工作:-(

任何帮助,将不胜感激。

4

2 回答 2

4

您需要将 OLD_NAME 回显到 tr 中:

OLD_NAME="$FILE"
NEW_FILE="$( echo "$OLD_NAME" | tr ' ' '_' )"
/bin/mv "$OLD_NAME" "$NEW_FILE"

但也许你更喜欢:

NEW_FILE=${OLD_NAME// /_}
于 2012-11-14T17:54:36.140 回答
0

您可以在没有管道的情况下更简单/更易读地进行替换,并tr使用以下命令:

NEW_FILE=${OLD_NAME// /_}

有关更多详细信息,请参见此处

于 2012-11-14T17:58:04.097 回答