在bash脚本中用下划线替换连字符

16

我试图编写一个Bash脚本,其中的一部分需要获取传递给它的参数并将其中的连字符(hyphen)替换为下划线(underscore),如果有的话。

我尝试了以下方法:

#!/usr/bin/env bash
string=$1
string=${string//-/_}
echo $string;

它告诉我这一行 string=${string//-/_} 由于"Bad substitution"而失败了,但它看起来应该可以完成任务?我有什么遗漏吗?


1
Bash的哪个版本?你发布的内容没有问题。 - Dennis Williamson
4
确切的错误信息是什么?看起来你是用类似于“sh testScript”的命令运行了脚本,而sh实际上并不是bash - chepner
@jww 除非你真正阅读了我尝试过并阅读了那些帖子,否则你会发现我尝试过使用连字符和下划线,但对我来说并没有起作用。它适用于其他每个字符。 - Octoxan
1个回答

26

你的脚本没有问题,在现代版的Bash中应该可以正常运行。

但以防万一,你可以简化为:

#!/bin/bash

echo "$1" | tr '-' '_'

这是防止参数替换不起作用(似乎是您的情况)的情况。

敬礼!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接