2017-01-23 62 views
1

我正在压缩生产的JS文件,希望能够在压缩之前自动化一些所需的单调乏味;其中的第一行:Shell脚本在压缩之前更改文件中的var?

var deploy = false, test_ads_dev = false, show_interstitial = false,

我需要var deploy = false改为var deploy = true,在文件中:app/assets/game.js(如在压缩机命令)。

我怎样才能获得脚本来执行subsitution?

#!/bin/bash 
first="var deploy = false" 
second="var deploy = true" 
first=${first/$second} 
java -jar yuicompressor-2.4.8.jar -v -o game.min.js app/assets/game.js 
+0

有什么期待? – Inian

+0

我需要'var deploy = false'更改为'var deploy = true'。谢谢。 – tidelake

+0

我会认为一个小小的sed命令,也许使用“就地”编辑选项,将允许你正在寻找的东西。 – Fred

回答

1

只需使用一个最小的sed这下面做就地更换。

sed -i.bak 's/\<var deploy = false\>/var deploy = true/' app/assets/game.js 

bash是不是真的做的文本文件模式搜索/替换,而sedawk将是合适的工具。

+0

不工作,仍然显示'var deploy = false' – tidelake

+0

@tidelake:您以前的评论是冒犯性的,因为人们不会在未经测试的情况下发布答案,它工作得很好对我来说 – Inian

+0

有没有可能丢失的'-i.bak'? – tidelake

0

谢谢你们。我自己也得到了另外60%的答案。

#!/bin/bash 
sed -i.bak 's/var deploy = false/var deploy = true/' app/assets/game.js 
java -jar yuicompressor-2.4.8.jar -v -o game.min.js app/assets/game.js 
mv app/assets/game.js.bak app/assets/game.js 
+0

这可以通过引用'sed'的第一部分,以便它将替换“var deploy = false”的完全匹配。如果您不想更改原始文件,请删除'-i'并将输出指向另一个文件。 –