在 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(仅保证该标准所需的功能)的脚本中使用是不安全的。
我在 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(仅保证该标准所需的功能)的脚本中使用是不安全的。