在 bash 脚本中用另一个字符串替换子字符串

Replacing substring for another string in bash script

我在 Ubuntu 20.04 VM 中创建 shell 脚本,所以我在 bash 中测试以下内容:

echo ${"/mnt/raid1/"//\//}

我需要实现的是获取文件夹的路径作为有效变量名,类似于'mntraid1'。但是之前的代码抛出 bash 错误 - 替换错误。

任何方向表示赞赏。

这个parameter expansion的第一个位置只能是一个变量名。因此,您必须在 运行 对其进行替换之前将字符串分配给变量。

#!/usr/bin/env bash
#              ^^^^- this makes your script a bash script

# for extra paranoia, one can add an explicit version check
# otherwise, a user running 'sh yourscript' can override the shebang above
case $BASH_VERSION in '') echo "This script requires bash" >&2; exit 1;; esac

dev=/mnt/raid1
var=${dev//'/'/}
echo "Variable name corresponding to $dev is $var"

请注意,这是 POSIX sh 标准不保证的扩展。因此,在任何带有 #!/bin/sh shebang(仅保证该标准所需的功能)的脚本中使用是不安全的。