67得票2回答
双分号(;;)语法在Dash中的用法

我正在尝试找到一种在sh中并行运行多个命令并等待它完成的方法。 我发现以下内容不起作用(sh: 1: Syntax error: ";" unexpected):sh -c '(sleep 3 && echo 1) & ; (sleep 3 &amp...

50得票5回答
Bash、Dash和字符串比较

我正在尝试在一个简单的shell脚本中比较两个字符串。 我一直使用的是/bin/sh而不是/bin/bash,在经过无数个小时的调试之后,发现sh(实际上是dash)无法处理这段代码块:if [ "$var" == "string" ] then do something fi 如何使...

42得票3回答
dash shell 中类似于 pipefail 的等效设置是什么?

dash shell中是否有与bash中的pipefail相对应的类似选项? 或者有没有其他方法可以在管道中的某个命令失败时获取非零状态(但不像set -e那样退出)。 为了使其更清晰,这里是我想要实现的一个示例: 在一个样本调试Makefile中,我的规则看起来像这样:set -o p...

26得票4回答
符合POSIX标准的shell中的数组

根据hyperpolyglot.org上的参考表,以下语法可用于设置数组。 i=(1 2 3) 但我在Ubuntu上使用默认的/bin/sh,也就是dash时出现了错误,它应该符合POSIX标准。 # Trying the syntax with dash in my terminal...

24得票3回答
在Ubuntu中,重定向符号"<<<"是什么意思?

我遇到了这个错误 语法错误:重定向未预期 在这一行: if grep -q "^127.0.0." &lt;&lt;&lt; "$RESULT" 我该如何在Ubuntu上运行这个程序?

22得票9回答
Shell脚本输入重定向的一些奇怪问题

有人能解释这种行为吗? 运行:#!/bin/sh echo "hello world" | read var1 var2 echo $var1 echo $var2 结果没有任何输出,而:#!/bin/sh echo "hello world" &gt; test.file read var1...

21得票2回答
在Linux和BSD中,使用和不使用shebang的Bash脚本执行方法

在没有shebang的情况下,Bash样式脚本作为二进制文件运行时如何确定执行什么以及由谁确定?我猜想带有shebang的普通脚本的运行是通过binfmt_script Linux模块处理的,该模块检查shebang,解析命令行并运行指定的脚本解释器。但是当有人在没有shebang的情况下运行...

21得票4回答
Linux shell脚本中for循环的语法

我在实现一个for循环时遇到了问题。当我执行脚本时,会出现以下错误: test1.sh: 2: 语法错误:不良的for循环变量 我不理解这个错误。 这是我的脚本:#!/bin/bash for (( c=1; c&lt;=5; c++ )) do echo "Welcome $c...

18得票2回答
使用sh运行bash脚本

我有一个bash脚本,它需要bash程序。 另一个人试图运行它,使用的是 sh script_name.sh 它失败了,因为在他的发行版中,sh是指向dash的符号链接。$ ls -la /bin/sh lrwxrwxrwx 1 root root 4 Aug 25 16:06 /bin/s...

18得票5回答
可移植的方式检查Shell变量是否为空

在Shell脚本中,测试变量是否为空/未定义的可携带且规范的方法是什么?它应该适用于所有类似sh的Shell。我现在所做的类似于:if [ -z "$var" ] ; then ... 对于反向操作,当变量不为空/未定义时执行某些操作:if [ -n "$var" ] ; then ...