我有一个文件(想象):
test() {
echo ${%%NUMBER%%}
}
我需要:
%%NUMBER%%
替换为数字我是怎么做到的:
#!/bin/bash
# Full path of this script
FILE=`readlink -f "${BASH_SOURCE[0]}"`
# This directory path
DIR=`dirname "${FILE}"`
repl() {
STRING=$(cat $DIR/skel.txt)
STRING=$(echo $STRING | sed "s/%%NUMBER%%/$1/")
echo $STRING
}
# try it
repl 50 > ./out.sh
# tried as well:
# repl 50 | tee ./out.sh
# echo "$(repl 50)" > ./out.sh
# STRING=$(echo -e $STRING | sed "s/%%NUMBER%%/$1/")
但我总是在out.sh
文件中将所有内容都放在一行中。需要它保持多线,如源。
感谢。
答案 0 :(得分:2)
试试这个:
repl() {
sed "s/%%NUMBER%%/$1/" "$DIR/skel.txt"
}
效率更高,不会吃掉你宝贵的新品。