gpt4 book ai didi

string - 高效/简洁地检查可变内容的开始/结束

转载 作者:行者123 更新时间:2023-11-29 09:44:10 25 4
gpt4 key购买 nike

我想实现一个简单的检查字符串变量的值是否已由用户提供或生成。

到目前为止,“算法”只是在生成字符串时简单地将“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 分区的名称,我宁愿不销毁其他(例如使用过的)磁盘分区之一在这个过程中偶然。

最佳答案

my question is: can i somehow do the check for the presence of a string on both ends of a value?

一种方式是说:

[[ $VAL == ${GUARD}*${GUARD} ]] && echo ok

关于string - 高效/简洁地检查可变内容的开始/结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19250444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com