我想实现一个简单的检查字符串变量的值是否已由用户提供或生成。
到目前为止,“算法”只是简单地将“GUARD”值附加/添加到字符串(如果生成的话)。就像是:
USERVAL=$1
GUARDEDVAL=GUARD_${USERVAL}_GUARD
现在我正在寻找一个简单的检查来查看变量的值是否设置了这些 GUARDS。例如:
check_guard() {
local v=$1
if [ "${v}" = "${v#GUARD_}" ]; then return 1; fi ## missing leading 'GUARD_'
if [ "${v}" = "${v%_GUARD}" ]; then return 1; fi ## missing trailing 'GUARD_'
return 0
}
check_guard "${GUARDEDVAL}" && echo "ok"
check_guard "${USERVAL}" && echo "ok"
现在的实施check_guard
工作正常,但我认为它有点冗长。
我的问题是:我可以以某种方式检查值两端是否存在字符串吗?
像这样的东西(显然不工作):
test "${v}" != "${${v#GUARD_}%_GUARD}"
我宁愿只使用 bash 内置命令,而不使用外部命令,如 sed,如
test "${v}" = "GUARD$(echo $v | sed -e 's|GUARD||g')GUARD"
所有这些箍的原因是,GUARDEDVAL 确实是我在脚本期间创建和销毁的 lvm 分区的名称,我宁愿在此过程中不销毁其他(例如使用过的)磁盘分区之一意外地。