相关疑难解决方法(0)

当我运行`sh -c"命令"`,一个新的shell或者没有这些时,是否有一个子shell?

在bash中,当我运行以下命令时:

sh -c "command"
Run Code Online (Sandbox Code Playgroud)

是否创建了一个子shell然后command执行?

我的猜测是命令将在当前的shell中运行,但我不确定.这个猜测来自我已经使用以下命令测试的事实:

echo $BASHPID, $BASH_SUBSHELL
Run Code Online (Sandbox Code Playgroud)

sh -c "echo $BASHPID, $BASH_SUBSHELL"
Run Code Online (Sandbox Code Playgroud)

结果是一样的.但是,有人告诉我这可能有点误导,因为在执行命令之前可能会替换变量.这是真的吗?

bash command-line

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

shell脚本函数返回一个字符串

我是shell脚本的新手,我正在尝试创建一个简单的函数,它将返回作为参数传递的连接的两个字符串.我试过下面的代码

   function getConcatenatedString() {
       echo "String1 $1"
       echo "String2 $2"
       str=$1/$2
       echo "Concatenated String ${str}"
       echo "${str}"
   }
Run Code Online (Sandbox Code Playgroud)

//我正在调用上面的函数

  constr=$(getConcatenatedString "hello" "world")
  echo "printing result"
  echo "${constr}"
  echo "exit"
Run Code Online (Sandbox Code Playgroud)

使用上面的代码运行脚本时,我看到下面的输出,

   printing result
   String1 hello
   String2 world
   Concatenated String hello/world
   hello/world
   exit
Run Code Online (Sandbox Code Playgroud)

如果你看代码我首先调用函数然后我回显"打印结果"语句,但结果首先是"打印结果"并回显函数内部的语句.以下语句是否调用该函数

   constr=$(getConcatenatedString "hello" "world")
Run Code Online (Sandbox Code Playgroud)

要么

   echo ${constr}
Run Code Online (Sandbox Code Playgroud)

正在调用这个函数?

因为如果我注释掉#echo $ {constr}那么没有什么能得到回应!请澄清我.

unix linux shell

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

标签 统计

bash ×1

command-line ×1

linux ×1

shell ×1

unix ×1