相关疑难解决方法(0)

使用IF语句时,如何在多行上拆分shell命令?

当命令是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的理解中缺少哪些内容可以帮助我理解未来的类似问题?

syntax sh

346
推荐指数
2
解决办法
36万
查看次数

如何从Maven Central下载jar而不编写任何pom.xml

我想要像下面这样的东西.

我只想要一个能够从Maven存储库下载jar及其依赖项的实用程序,而不对我的项目应该如何构建施加任何限制.

我想要这样的东西:

download-jar --dest=lib/ 'commons-io:commons-io:jar:1.4'
Run Code Online (Sandbox Code Playgroud)

它应该能够下载依赖项.

更新:

我不知道应该构建一个pom.xml.

我需要完成的唯一任务是下载罐子,我想有一个工具可以完成这项任务,不会给我带来超级信息.

有类似的东西?

java maven-2

34
推荐指数
3
解决办法
5万
查看次数

在 shell 脚本中的变量名之前插入“local”会导致错误

这段代码(它是 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。

bash sh

4
推荐指数
1
解决办法
87
查看次数

标签 统计

sh ×2

bash ×1

java ×1

maven-2 ×1

syntax ×1