小编its*_*tsh的帖子

在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万
查看次数

如何检索 RSpec::Expectations::ExpectationTarget: @target 的值?

我有一个返回哈希值的 ruby​​ 方法。我的此方法的 Rspec 如下所示:

require "java"
require "rubygems"
require 'rspec'
require 'spec_helper'
require_relative '../src/lib/my_class.rb'

describe MyMod::Myclass do
  before(:all){
                @my_obj = MyMod::Myclass.new
              }


it "" do
  expect(@my_obj.get_hash_info(city)).should == {"name"=>"NY", "zip"=>"1234"}
  puts "get_hash_info method test case PASSED"
end
end
Run Code Online (Sandbox Code Playgroud)

但它通过给出以下消息而出错:

   Failure/Error: expect(@my_obj.get_hash_info(city)).should == {"name"=>"NY", "zip"=>"1234"}

   expected: {"name"=>"NY", "zip"=>"1234"}
        got: #<RSpec::Expectations::ExpectationTarget:0x6339e604 @target={"name"=>"NY", "zip"=>"1234"}> (using ==)
   Diff:
   @@ -1,7 +1,9 @@
   -"name"=>"NY",
   -"zip"=>"1234",
   +#<RSpec::Expectations::ExpectationTarget:0x6339e604
   + @target=
   +  {"name"=>"NY",
   +   "zip"=>"1234"}>
Run Code Online (Sandbox Code Playgroud)

我需要帮助来检索 的值,RSpec::Expectations::ExpectationTarget:0x6339e604 @target以便将其与预期的哈希值进行比较。

谢谢。

ruby rspec

3
推荐指数
1
解决办法
778
查看次数

bash shell脚本中的意外输出

对于下面的脚本,我期待输出 msg_y and msg_z.但它是印刷品msg_x and msg_z.有人可以向我解释发生了什么事吗?

#!/bin/bash
 set -x

vr=2
echo $vr
if [ $vr > 5 ]
then
        echo "entered 1st if"
        echo "msg_x"

        echo "out of 1st if"

        if [ $vr < 8 ]; then
        echo "in of 2nd if"
        echo "msg_y"

        else
        echo "msg_z"
        fi

else
        if [ $vr > 1 ]; then echo "msg_y"

        else echo "msg_z"
        fi
fi
Run Code Online (Sandbox Code Playgroud)

linux bash shell

2
推荐指数
1
解决办法
97
查看次数

if else语句在shell脚本中失败

我有一个非常简单的shell脚本,它在if-else失败了.我无法理解什么是错的.我检查了我的语法和缩进.

echo_usr()
{
    read -p "Do you want to preserve $EIP_HOME/conf and $EIP_HOME/installer/.datastore? [Y/N] " usr_in

    kill_java()

    if [ "$usr_in" == "y*" ] || [ "$usr_in" == "Y*" ]; then
        preserve_conf()
    else
        if [ "$usr_in" == "n*" ] || [ "$usr_in" == "N*" ]; then
            reset_home_eip()
        else
            echo "Invalid input"
        fi
    fi

    reset_db()
}
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:意外令牌附近的语法错误`else'

shell

2
推荐指数
1
解决办法
304
查看次数

仅接受数字输入

我想强制用户只从控制台输入数值.下面是我应该做的那段代码.

puts "Enter numeric value: "
result = gets.chomp

if result.to_i.is_a? Numeric
  puts "Valid input"
else
  puts "Invalid input."
end
Run Code Online (Sandbox Code Playgroud)

Valid input即使输入字符串值,它也会打印出来.原因是每个字符串在Ruby中都有一些等价的数值.有人可以帮助我正确修复条件,以便当用户输入非数字值时,脚本会提示Invalid input.吗?

ruby

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

中缀前缀后缀

我在一些脑筋急转弯问题库中遇到过这个问题.

What should be the answer of this?
( (3+1) / 3) * 6

I thought it is 7 but the correct answer is 8. 
Run Code Online (Sandbox Code Playgroud)

只有在(3 + 1)*(6/3)时才会发生这种情况.由于表达式中有括号,我怎么能得到8?我试着仔细检查,答案是正确的.

有人可以帮我理解这个吗?

math

-6
推荐指数
1
解决办法
548
查看次数

标签 统计

bash ×2

linux ×2

ruby ×2

shell ×2

math ×1

rspec ×1