你可以用eval命令做什么?为什么有用?它是 bash 中的某种内置函数吗?没有man它的页面。。
我想通过操作元素数组并创建一些算术过程来动态创建字符串序列。
for name in FIRST SECOND THIRD FOURTH FIFTH; do
$name = $(( $6 + 1 ))
$name = "${$name}q;d"
echo "${$name}"; printf "\n"
done
Run Code Online (Sandbox Code Playgroud)
期望结果将是下面的$6equals 0。
1q;d
2q;d
3q;d
4q;d
5q;d
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误
reel_first_part.sh: line 18: FIRST: command not found
reel_first_part.sh: line 19: ${$name}q;d: bad substitution
reel_first_part.sh: line 18: FIRST: command not found
reel_first_part.sh: line 19: ${$name}q;d: bad substitution
reel_first_part.sh: line 18: FIRST: command not found
reel_first_part.sh: line 19: ${$name}q;d: bad substitution
Run Code Online (Sandbox Code Playgroud)
我想这很简单。当我做类似的事情时它曾经工作过
FIRST=$(( $6 + 1 …Run Code Online (Sandbox Code Playgroud) 我需要在bashshell 中间接引用一个变量。
我基本上想make通过写作来做你可以做的事情$($(var))。
我曾尝试使用${$var}哪个是最直接的解决方案,bash但随后出现此错误:
bash: ${$var}: bad substitution
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我想要做的是使用迭代变量将所有参数 ( $1, $2, $3, ...) 迭代到程序中,如果没有间接,我无法做到这一点。
我如何添加一个变量作为我想要检查值的变量的名称。我的代码如下,当我运行这个我得到错误:
[: A_variable: integer expression expected
Run Code Online (Sandbox Code Playgroud)
我认为这是因为在对变量执行 if 时,正确的语法应该是: if [ $A_variable -eq 1 ]; 但我无法将美元符号放在我的变量前面,因为我在变量的值中放置了一个不同的变量。
它几乎应该是:如果 [ $${letter}_variable 或一些混合,但我不知道是什么?
array=("A" "B" "C")
A_variable=1
B_variable=2
for letter in "${array[@]}"
do
if [ ${letter}_variable -eq 1 ]; then
...
Run Code Online (Sandbox Code Playgroud)