如何替换 bash 中的所有引号 ' "

how to replace all quotes ' " in bash

我想用 bash 命令删除简单的 ' 和双引号 ",但我不能用 bash 命令删除 '。 我不知道我做错了什么,但是这个命令给我一个错误,有人知道吗?

user_download_dir_folder=$(echo ${user_download_dir_folder} | sed "s/\"\'//g")

您可以使用 string manipulation or tr:

user_download_dir_folder=$(tr -d \"\' <<< "$user_download_dir_folder")
# OR
user_download_dir_folder="${user_download_dir_folder//[\"\']/}"

看到 online demo:

#!/bin/bash
user_download_dir_folder="12\"4'5"
user_download_dir_folder=$(tr -d \"\' <<< "$user_download_dir_folder")
echo "$user_download_dir_folder"
## => 1245

user_download_dir_folder="12\"4'5"
user_download_dir_folder="${user_download_dir_folder//[\"\']/}"
echo "$user_download_dir_folder"
## => 1245

sed "s/\"\'//g" 的问题是您试图匹配 " 后跟 '。您应该将它们放在 方括号表达式 中或匹配任一引号。

假设这是您的输入:

user_download_dir_folder="abc\"1'23'foo\"bla"

echo "$user_download_dir_folder"

abc"1'23'foo"bla

您可以这样使用sed

sed "s/[\"']//g" <<< "$user_download_dir_folder"

abc123foobla

或在bash中:

echo "${user_download_dir_folder//[\'\"]/}"

abc123foobla

非常感谢,它正在工作。最后我做到了

user_download_dir_folder=$(echo ${user_download_dir_folder} | sed "s/\"//g" | sed "s/'//g") #remove ' and " 

但是你的方案要好很多,这个方案也比较优雅,没想到