我有一个看起来像这样的字符串:
X = model.addVar(vtype="GRB.BINARY", name = "x1")
这存储在以下脚本中的变量/mnt/blumeta0/db2/head/home/db2inst1/sqllib/ctrlha/ /mnt/blumeta0/db2/head/home/db2inst1/sqllib/ctrl/ /mnt/blumeta0/db2/head/home/db2inst1/sqllib/log/ /mnt/blumeta0/db2/head/home/db2inst1/sqllib/cfg/
中:我正在尝试删除所有出现的前缀sqllib_files_folders
(我写了以下内容的TMP_SOTRAGE
):
/mnt/blumeta0/db2
这适用于没有#!/bin/sh
TMP_STORAGE="/mnt/blumeta0/db2"
METADATA_PATH="/head"
sqllib_files_folders=$(find $TMP_STORAGE$METADATA_PATH/home/db2inst1/sqllib/ -maxdepth 1 -mindepth 1 '(' '(' -type d -printf '%p/ ' ')' -o -printf '%p ' ')')
sqllib_files_folders=echo ${sqllib_files_folders//$TMP_STORAGE/}
echo $sqllib_files_folders
的字符串。我尝试使用/
进行转义。但这也不起作用。有什么帮助吗?
答案 0 :(得分:1)
例如:
sqllib_files_folders=$(echo $sqllib_files_folders|sed "s%$TMP_STORAGE%%g")
答案 1 :(得分:1)
有两个想法:
cd cd到目录,所以前缀不出现在find
输出中:
sqllib_files_folders=$(cd "$TMP_STORAGE" && find ./"$METADATA_PATH"/home/db2inst1 ...)
反斜杠转义用于参数扩展替换的斜杠(这是一个很大的意思):
sqllib_files_folders=${sqllib_files_folders//${TMP_STORAGE//\//\\/}/}
# ...........................................^^...........^^^^^^^^^