当命令是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的理解中缺少哪些内容可以帮助我理解未来的类似问题?
我想要像下面这样的东西.
我只想要一个能够从Maven存储库下载jar及其依赖项的实用程序,而不对我的项目应该如何构建施加任何限制.
我想要这样的东西:
download-jar --dest=lib/ 'commons-io:commons-io:jar:1.4'
Run Code Online (Sandbox Code Playgroud)
它应该能够下载依赖项.
更新:
我不知道应该构建一个pom.xml.
我需要完成的唯一任务是下载罐子,我想有一个工具可以完成这项任务,不会给我带来超级信息.
有类似的东西?
这段代码(它是 shell 函数的一部分)完美运行:
output=$(\
cat "${vim_file}" | \
sed -rne "${EXTRACT_ENTITIES}" | \
sed -re "${CLEAR_LEADING_QUOTES}" | \
sed -re "${NORMALIZE_NAMES}" \
)
Run Code Online (Sandbox Code Playgroud)
但是当我试图在作业前插入“本地”这个词时……
local output=$(\
cat "${vim_file}" | \
sed -rne "${EXTRACT_ENTITIES}" | \
sed -re "${CLEAR_LEADING_QUOTES}" | \
sed -re "${NORMALIZE_NAMES}" \
)
Run Code Online (Sandbox Code Playgroud)
...我收到一个奇怪的错误:
local: commands.: bad variable name
Run Code Online (Sandbox Code Playgroud)
代码中没有错误的不可见字符:只有制表符在其他地方缩进和空格。该脚本以“#!/bin/sh”开头。在函数中的其他变量之前插入“local”不会导致任何问题。用另一个任意字符串替换“输出”(变量名)不会有任何改变。操作系统是Linux。