如何替换变量中的值

时间:2016-04-15 10:22:52

标签: unix sh

美好的一天,

我有一个简单的UNIX脚本test.sh

我需要替换变量的值。 该变量包含目录路径。

我的test.sh脚本

#!/bin/sh
filepath="/host/messages/in/documents"
archivePath=`${filepath/\/in/\/archive/}`
echo "archive path is " $archivePath

我得到一个"糟糕的替代"我跑的时候出错了。

archivePath所需的输出应为:

/host/messages/archive/documents

我做错了什么以及可能的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

必须使用bash(或ksh或zsh),使用正确的语法${varname/pattern/replacement}并在/\pattern之后转义replacement

#!/bin/bash
filepath="/host/messages/in/documents"
archivePath="${filepath/\/in\//\/archive\/}"
echo "archive path is $archivePath"

答案 1 :(得分:0)

找到了一个sed的解决方案:

#!/bin/sh
filepath="/host/messages/in/documents"
echo $filepath | sed -e %s/in/archive/g
archivePath=`echo $filepath | sed -e s/in/archive/g`
echo "archive path is $archivePath"