当命令是if语句的一部分时,如何在shell中的多行上拆分命令?
这有效:
if ! fab --fabfile=.deploy/fabfile.py --forward-agent --disable-known-hosts deploy:$target; then rc=1
fi
Run Code Online (Sandbox Code Playgroud)
这不起作用:
# does not work:
if ! fab --fabfile=.deploy/fabfile.py \
--forward-agent \
--disable-known-hosts deploy:$target; then
rc=1
fi
Run Code Online (Sandbox Code Playgroud)
而不是整个命令执行,我得到:
./script.sh: line 73: --forward-agent: command not found
Run Code Online (Sandbox Code Playgroud)
更重要的是,我对Bash的理解中缺少哪些内容可以帮助我理解未来的类似问题?
我一直使用基于接口的git客户端(smartGit),因此对git控制台没有多少经验.
但是,我现在需要在历史记录中替换所有.txt文件中的字符串(因此,不要删除整个文件而只是替换字符串).我找到了以下命令:
git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all
Run Code Online (Sandbox Code Playgroud)
我试过这个,不幸的是注意到密码确实发生了变化,所有二进制文件都被破坏了.图像等都会被破坏.
有没有更好的方法来做到这一点,不会破坏我的二进制文件?
谢谢.
编辑:
我搞砸了什么.导致二进制文件损坏的实际代码是:
$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
Run Code Online (Sandbox Code Playgroud)
顶部的代码实际上使用我的密码奇怪地删除了所有文件.
git version-control substitution git-filter-branch git-rewrite-history