我正在config.mk使用一个将由Makefile使用的bash脚本动态生成.该文件构造为:
cat > config.mk <<CFG
SOMEVAR := $value_from_bash1
ANOTHER := $value_from_bash2
CFG
Run Code Online (Sandbox Code Playgroud)
如何确保生成的文件确实包含内容$value_from_bash*,而不是扩展/解释的内容?我可能需要逃避$到$$并\到\\,但是否有其他字符需要进行转义?也许有一个我没有听说过的特殊字面作业?
太空似乎也很麻烦:
$ ls -1
a b
a
$ cat Makefile
f := a b
default_target:
echo "$(firstword $(wildcard ${f}))"
$ make
a
Run Code Online (Sandbox Code Playgroud)
如果我使用f := a\ b它的工作原理(使用引号f := 'a b'也不起作用,makefile只会将其视为常规字符)
如何使用echo 编写非ASCII字符?是否有转义序列,例如\012或类似的东西?
我想使用以下方法将ASCII字符附加到文件:
echo ?? >> file
Run Code Online (Sandbox Code Playgroud) 我想用grep搜索一个如下所示的字符串:
something ~* 'bla'
Run Code Online (Sandbox Code Playgroud)
我试过这个,但是shell删除了单引号argh ..
grep -i '"something ~* '[:alnum:]'"' /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
什么是正确的搜索?
我正在构建一小组脚本来远程启动,停止和检查进程的状态.在stop这些脚本应该寻找一个过程,并杀死它.因此,我做:
ssh deploy@hera 'kill -9 `ps -ef | grep MapReduceNode | grep -v "grep" | awk -F " " '{print $2}' | head -n 1`'
Run Code Online (Sandbox Code Playgroud)
这里的问题是awk标记化步骤需要单引号,并且这些单引号与用于通过ssh执行远程命令的单引号冲突.这些单引号如何被转义?
想要创建此命令的别名
find . -name '*.sh' -exec chmod a+x '{}' \;
Run Code Online (Sandbox Code Playgroud)
并且在设置别名时我无法转义单引号
alias mx='find . -name '*.sh' -exec chmod a+x '{}' \;'
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
如果我使用单引号,带撇号("不要")的单词很难逃脱:
'Don'"'"'t do that'
Run Code Online (Sandbox Code Playgroud)
如果我使用双引号,美元符号和惊叹号将其绊倒:
"It cost like \$1000\!"
Run Code Online (Sandbox Code Playgroud)
我可以使用另一种引用吗?
编辑:我还应该补充一点,我想直接将此字符串作为命令行参数传递,而不是将其存储在变量中.为此,我尝试使用DigitalRoss的解决方案,
$ echo "$(cat << \EOF
Don't $worry be "happy".
EOF)"
Run Code Online (Sandbox Code Playgroud)
但得到
dquote cmdsubst>
Run Code Online (Sandbox Code Playgroud)
点击后输入:/.所以在这一点上,ZyX的建议setopt rcquotes看起来是最方便的.
我正在尝试编写一个bash脚本,将目录的所有pdf文件合并为一个pdf文件.该命令pdfunite *.pdf output.pdf成功实现了此功能,但它按正常顺序合并输入文档:
1.pdf
10.pdf
11.pdf
2.pdf
3.pdf
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf
Run Code Online (Sandbox Code Playgroud)
虽然我希望文档以数字顺序合并:
1.pdf
2.pdf
3.pdf
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf
10.pdf
11.pdf
Run Code Online (Sandbox Code Playgroud)
我猜命令混合ls -v或sort -n和pdfunite会做的伎俩,但我不知道如何将它们结合起来.关于如何将pdf文件与数字排序合并的任何想法?
我也尝试使用 bq 命令行自动生成新的每日表
bq query \
--destination_table=<destination> \
--allow_large_results \
--noflatten_results \
'<query>'
Run Code Online (Sandbox Code Playgroud)
下面给出了哪里。问题在于sql查询中存在一堆单引号和双引号,并且bq命令行工具也是使用单引号来划分要执行的查询。
所以我知道问题是我必须转义引号,但我不知道该怎么做。我尝试将查询中的单引号替换为“\'”(不带双引号),但这没有帮助,而且似乎是合乎逻辑的做法。我认为有一些明显我没有做的事情,所以希望有人可以帮助我,而不需要做很多工作。
SELECT
time,
userId,
deviceId,
systemName,
LEFT(systemVersion,3) AS systemVersionMajor,
systemVersion AS systemVersionMinor,
deviceModel,
appVersion,
country,
city,
firstRun,
priorTimeSpentInApp,
priorSessions,
priorEvents,
event_name,
event_info,
event_time,
event_value,
MAX(CASE WHEN user_attribute.Name = 'Gen_Total_Sessions' THEN FLOAT(user_attribute.Value) END) AS Gen_Total_Sessions.attr,
MAX(CASE WHEN user_attribute.Name = 'Gen_Last_Achievement' THEN STRING(user_attribute.Value) END) AS Gen_Last_Achievement.attr,
MAX(CASE WHEN event_parameters.Name = 'Gamemode' THEN STRING(event_parameters.Value) END) AS Gamemode.param,
MAX(CASE WHEN event_parameters.Name = 'Player_Level' THEN FLOAT(event_parameters.Value) END) AS Player_Level.param,
FROM
TABLE_QUERY([projectId:dataSet], …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用预期输出来格式化 json 字符串,jq如下所示:
[
{
"command": [
"printf 'this is a text'"
]
}
]
Run Code Online (Sandbox Code Playgroud)
但是,我无法让它适用于单引号('),例如$ jq -n '[{"command": ["printf 'this is a text'"]}]'给我一个编译错误。
我还考虑过转义所有双引号,例如jq -n "[{\"command\": [\"printf 'this is a text'\"]}]",这很好,但是 json 字符串是从函数传入的,我可以\"先替换所有双引号,然后运行 jq 命令,但这不是很优雅。
有没有更好的方法来处理 json 字符串中的单引号?
我很高兴我在rails代码中修复了这个愚蠢的错误,我很乐意在终端输入以下内容:
git add .
git commit -am "Finally fixed that difficult bug!"
Run Code Online (Sandbox Code Playgroud)
只是发现git不喜欢"!".有谁知道我可以将它纳入我的提交消息的方式?