相关疑难解决方法(0)

在C中生成Segfault的最简单的标准符合方式是什么?

我认为问题就是这么说的.涵盖从C89到C11的大多数标准的示例将是有帮助的.我虽然这个,但我猜它只是未定义的行为:

#include <stdio.h>

int main( int argc, char* argv[] )
{
  const char *s = NULL;
  printf( "%c\n", s[0] );
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如一些投票要求澄清:我希望有一个程序通常有编程错误(我能想到的最简单的是段错误),这是保证(按标准)中止.这与最小的段错误问题有点不同,它不关心这种保险.

c iso segmentation-fault

58
推荐指数
6
解决办法
2万
查看次数

测试bash函数返回值的正确方法是什么?

我想在if语句中测试一个bash函数返回值,如下所示:

if [[ func arg ]] ; then …
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息,如:条件二进制运算符预期.

这样做的正确方法是什么?

是吗:

 if [[ $(func arg) ]] ; then ...
Run Code Online (Sandbox Code Playgroud)

bash function

56
推荐指数
4
解决办法
8万
查看次数

在bash中,如何在变量中存储返回值?

我知道Linux中的一些非常基本的命令,我正在尝试编写一些脚本.我编写了一个函数,用于计算5位数字中最后2位数的总和.该函数应该在最后的2位数之间连接这个结果和并返回它.我想要返回此值的原因是因为我将在另一个函数中使用此值.

例如:如果我有12345,那么我的函数将计算4 + 5并返回495.

#!/bin/bash

set -x
echo "enter: "
        read input

function password_formula
{
        length=${#input}
        last_two=${input:length-2:length}
        first=`echo $last_two| sed -e 's/\(.\)/\1 /g'|awk '{print $2}'`
        second=`echo $last_two| sed -e 's/\(.\)/\1 /g'|awk '{print $1}'`
        let sum=$first+$second
        sum_len=${#sum}
        echo $second
        echo $sum

        if [ $sum -gt 9 ]
        then
               sum=${sum:1}
        fi

        value=$second$sum$first
        return $value
}
result=$(password_formula)
echo $result
Run Code Online (Sandbox Code Playgroud)

我试图回声并看到结果,但我得到的输出如下所示.

-bash-3.2$ ./file2.sh 
+++ password_formula
+++ echo 'enter: '
+++ read input
12385
+++ length=8
+++ last_two=85
++++ echo 85
++++ sed -e 's/\(.\)/\1 …
Run Code Online (Sandbox Code Playgroud)

linux bash

36
推荐指数
5
解决办法
8万
查看次数

在 shell 脚本中可移植地捕获 ERR

我正在尝试编写一个 shell 脚本,该脚本在命令失败时中止并显示有问题的行号。

set -e
trap 'echo "$0 FAILED at line ${LINENO}"' ERR
Run Code Online (Sandbox Code Playgroud)

结果发现陷阱行不适用于 Ubuntu 的默认 shell 脚本解释器 dash。如果我将 shebang 行更改#!/bin/bash为此有效但不使用#!/bin/sh. 有没有办法在不依赖 bash 的情况下完成这项工作?

顺便说一句,我从破折号得到的错误是这样的:

trap: ERR: bad trap
Run Code Online (Sandbox Code Playgroud)

error-handling bash shell dash-shell

7
推荐指数
2
解决办法
3037
查看次数

如何从Bash中的返回码号中提取位

我正在使用pylint实用程序,它返回以下错误代码:

Pylint should leave with following status code:

* 0 if everything went fine
* 1 if a fatal message was issued
* 2 if an error message was issued
* 4 if a warning message was issued
* 8 if a refactor message was issued
* 16 if a convention message was issued
* 32 on usage error

status 1 to 16 will be bit-ORed so you can know which different
categories has been issued by analysing pylint output …
Run Code Online (Sandbox Code Playgroud)

python bash pylint

5
推荐指数
1
解决办法
1421
查看次数