相关疑难解决方法(0)

如何推迟变量扩展

我想用尚未设置的变量初始化脚本顶部的一些字符串,例如:

str1='I went to ${PLACE} and saw ${EVENT}'
str2='If you do ${ACTION} you will ${RESULT}'
Run Code Online (Sandbox Code Playgroud)

然后稍后PLACE, EVENT, ACTION, 和RESULT将被设置。然后我希望能够在扩展变量的情况下打印出我的字符串。是我唯一的选择eval吗?这似乎有效:

eval "echo ${str1}"
Run Code Online (Sandbox Code Playgroud)

这是标准吗?有一个更好的方法吗?eval考虑到变量可能是任何东西,最好不要运行。

shell bash string

23
推荐指数
2
解决办法
3万
查看次数

使用“-o errtrace”(即设置-E)捕获命令替换中的错误

根据这个参考手册

-E(还有 -o errtrace)

如果设置,则 ERR 上的任何陷阱都由 shell 函数、命令替换和在子 shell 环境中执行的命令继承。在这种情况下,ERR 陷阱通常不会被继承。

但是,我必须错误地解​​释它,因为以下不起作用:

#!/usr/bin/env bash
# -*- bash -*-

set -e -o pipefail -o errtrace -o functrace

function boom {
  echo "err status: $?"
  exit $?
}
trap boom ERR


echo $( made up name )
echo "  ! should not be reached ! "
Run Code Online (Sandbox Code Playgroud)

我已经知道简单的赋值,my_var=$(made_up_name), 将退出脚本set -e(即 errexit)。

-E/-o errtrace应该的工作方式类似于上面的代码?或者,最有可能的是,我误读了它?

bash command-substitution

15
推荐指数
2
解决办法
7680
查看次数

我想要一个脚本,它将从用户那里获取多个列号并反转内容

我想要一个 Unix 脚本,它将从用户那里获取多个列号并反转内容。

declare -a param="$@"
# enter 0 when exit the insert element
echo "Enter the numbers"
read n
while [ $n -ne 0 ]
do
    x[$i]=`expr $n`
    read n
    let i++
done

#display the all array elements
echo "Array values ${x[@]}"
echo "Array values ${x[*]}"

# To find the array length
length=${#x[*]}
echo $length
Run Code Online (Sandbox Code Playgroud)

bash shell-script

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

标签 统计

bash ×3

command-substitution ×1

shell ×1

shell-script ×1

string ×1