我试图编写一个Bash脚本,其中的一部分需要获取传递给它的参数并将其中的连字符(hyphen)替换为下划线(underscore),如果有的话。 我尝试了以下方法:#!/usr/bin/env bash string=$1 string=${string//-/_} echo $string; 它告诉我这一行 string=${string//-/_} 由于"Bad substitution"而失败了,但它看起来应该可以完成任务?我有什么遗漏吗?
你的脚本没有问题,在现代版的Bash中应该可以正常运行。 但以防万一,你可以简化为:#!/bin/bash echo "$1" | tr '-' '_' 这是防止参数替换不起作用(似乎是您的情况)的情况。 敬礼!
sh
实际上并不是bash
。 - chepner