美好的一天,
我有一个简单的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
我做错了什么以及可能的解决方案是什么?
答案 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"