我有一个
的脚本文件**************************************************
case $arg in
-start)
**./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@**
if test $? -ne 0 ; then
exit 1
fi
;;
-version)
./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config -i -v $@
if test $? -ne 0 ; then
exit 1
fi
;;
-configtest)
./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config -i -c $@
if test $? -ne 0 ; then
echo 'failure: configuration test failed'
exit 1
fi
echo 'success: configuration was parsed successfully'
;;
-shell)
/bin/sh
;;
*)
echo "Usage: start [-start|-shell|-version|-configtest]"
exit 1
;;
**********************************************
我想替换
"./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@"
带
"newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@"
我厌倦了使用sed,但它不允许接受可变的数据。 你可以帮助我吗?通过捆绑各种各样的东西,我已经脱离了我的大脑......
提前致谢。
答案 0 :(得分:0)
你想要这一行:
./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@
看起来像这样:
newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@
对吗?然后:
只需使用单引号('
)将命令和管道(|
)包装为分隔符:
sed -i.bak 's|./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|' scriptfile
答案 1 :(得分:0)
sed -e 's|./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|' scriptfile