从变量中删除不需要的字符

从变量中删除不需要的字符

我看过其中一些问题和一些答案,但它们只告诉我如何将结果回显到屏幕上,并且通常只涉及一个角色。我需要删除字符', 并保留答案里面一个变量

我的 $var3 是:( '/scripts/test1.sh', 'Alf Complete', '-', 'S1E1', '-', 'Episode 1', 'has', 'been', 'paused', 'hellfire', 'i', 'Engsub - Series', 'testing'] 这是另一个程序的输出)

这应该被转换为命令,并通过使用“$var4”开始(并且应该看起来像这样)/scripts/test1.sh Alf Complete - S1S1 - Episode 1...

所以问题是,如何删除我不想要的字符并将新数据保留在新变量中(例如 $var4)

我可能会补充一点,我对 Linux 和编写脚本都很陌生......所以请把我视为“愚蠢的”......

编辑 27/1

我用以下内容开始脚本:

./test1.sh 'test1','test2','test3'

脚本后面的文本是调用该脚本的程序留下的参数。

这是我当前的脚本

#!/bin/sh
# populate var0
read -r var0<<-EOF
messer  # is the program that is going to be called in the end of this script
EOF

# populate var1
read -r var1<<-EOF
 --command='m "Adam Larsson"   # this is the first arguments 
EOF
# populate argumentsreal
read -r argumentsreal<<-EOF
$@   #this is the arguments that are posted by the application that calls this script
EOF

var4="'"  # this adds the last closing '  to the code

# Join Forces
var3="$var0 $var1 $argumentsreal $var4"   
echo $var3>txt.txt # dumping result (bugcheck)
$var3  # Executing command

这是到目前为止我的代码,我最大的问题是当我运行它时,程序梅塞尔Invalid message - check your syntax 但如果我这样做cat txt.txt我会得到结果:

messer --command='m "Adam Larsson" 测试 test1,test2,test3

如果我现在复制该文本行,并将其粘贴到命令行上,然后按 Enter 键,它就会完美运行。

那么,为什么当我从脚本运行它时它不起作用?

答案1

尝试用tr -d \',;喜欢printf '%s\n' "$var3" |tr -d \',;这将从变量中删除所有逗号和单引号$var

答案2

尝试bash“参数扩展:模式替换”:

$ echo "${var3//,}"
'/scripts/tautullimess.sh' 'Alf Complete' '-' 'S1E1' '-' 'Episode 1' 'has' 'been' 'paused' 'hellfire' 'i' 'Engsub - Series''testing']
$ echo "${var3//[\',]}"
/scripts/tautullimess.sh Alf Complete - S1E1 - Episode 1 has been paused hellfire i Engsub - Series testing]

相关内容