![来自两个命令行的不带空格的文件名](https://linux22.com/image/17502/%E6%9D%A5%E8%87%AA%E4%B8%A4%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%9A%84%E4%B8%8D%E5%B8%A6%E7%A9%BA%E6%A0%BC%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D.png)
我正在运行两个 Linux 命令,我想将结果值放在一个文件名中,不带空格和点分隔两个值。到目前为止,我已经得到了这个:
pid=`sudo dmidecode -s system-product-name`
vid=`sudo dmidecode -s system-version`
# cleanup spaces in $pid and $vid
filename=$pid.$vid.tar.gz
如何清理两个变量中的空格?
答案1
您可以使用 bash“模式替换”(在手册页中搜索该字符串以获取详细信息)。
filename=${pid// /}.${vid// /}.tar.gz
双斜杠表示替换所有出现的模式。双斜杠和下一个斜杠之间的空格是模式。替换模式位于最后一个斜杠之后,在本例中为空。您可以删除最后一个斜杠,但为了清晰起见,我更喜欢它,因为它将空格括起来。
答案2
您可以使用 sed:
pid=$(sudo dmidecode -s system-product-name | sed 's/ *//g')