我有一个小的Bash脚本,基本上需要一个JavaScript文件,使用yui-compressor缩小它,添加一些字符串并将其存储到另一个文件中:
#!/usr/bin/env bash
PATH_OF_SOURCE='../some_directory/some_input_file.js'
PATH_TO_WRITE='some_output_file.js'
CONTENT_VAR=$(yui-compressor ${PATH_OF_SOURCE}) # minify JS file
CONTENT_VAR="{CONTENT_VAR} some_string_here" # Append a string
echo CONTENT_VAR > $PATH_TO_WRITE # Write to file
问题是:输入的JavaScript文件在字符串中包含一些星号(*),如
var myString = 'Fields marked with * are required';
但是,我的Bash脚本将*替换为当前工作目录的文件列表,因此我将获得Fields marked with file1.js file2.js ... are required
当然,我不希望这样。不幸的是,任何更改/覆盖原始输入文件(如转义)都是不可能的:一切都必须在脚本中发生。