在脚本中设置数字变量("设置$ i 1")不起作用(" echo $ i" empty)

时间:2017-01-20 14:28:41

标签: bash

正如标题所说,我需要一个bash脚本的帮助,该脚本必须生成给定两个数字变量的字符串。该字符串将用于生成文件名,但是当我测试名称生成代码时,它不会产生任何内容

脚本是后面的代码

# !usr/bin
set nombre
declare -a i
declare -a j

set $i  1
set $j  2

set nombre "$i\_$j.txt"

echo $i
echo $j

以下是它的收益:

entropy@3PY:~$ ./test4

正如你所看到的,它应该产生什么,而它应该产生

1
2

提前致谢

2 个答案:

答案 0 :(得分:4)

set不用于为常规变量赋值;它用于设置位置参数的值或修改shell选项。你需要定期分配。

i=1
j=2
nombre="${i}_$j.txt"

echo "$i"
echo "$j"
echo "$nombre"

在分配之前无需声明变量;赋值在必要时创建变量。 declare命令更多的是关于在名称(-a上设置属性,例如,将变量标记为数组变量,你做的事情需要这里。)

作为set 的工作方式的示例,请考虑

echo "First positional parameter: $1"
echo "Second positional parameter: $2"
set foo bar  # $1=foo, $2=bar
echo "First positional parameter: $1"
echo "Second positional parameter: $2"

答案 1 :(得分:0)

此代码是否按预期工作?

#!/bin/bash
i=1
j=2

echo $i
echo $j

nombre=$i"_"$j.txt

echo $nombre